“ HTTP 406不可接受”尝试发送PDF转换为base64时 C#Xamarin

问题描述

我正在使用到转换为base64的PDF的端点进行POST方法,但是我收到的是HTTP 406 CODE。我在主体中包含了mime类型的application / pdf,并且包括了接受我的POST请求所必需的标头,但我仍然收到406代码。 json主体在接收406代码时是否有任何连接,或者我的标头出现问题?有关终点和json主体的详细信息,请参见附件图像。

public class MyFile
{
    [JsonProperty("mime")]
    public string MimeType { get; set; }
    [JsonProperty("data")]
    public string Base64Data { get; set; }
}

public class PdfFile
{
    [JsonProperty("file")]
    public MyFile myFile { get; set; }
}

string pdfBase64;
const string pdfFileName = "file.pdf";
    
                    using (var pdfStream = await FileSystem.OpenAppPackageFileAsync(pdfFileName))
                    {
                        using (var pdfReader = new StreamReader(pdfStream))
                        {
                            var fileContents = await pdfReader.ReadToEndAsync();
                            pdfBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(fileContents));
                        }
                    }
    
                    var file = new MyFile();
                    var pdf = new PdfFile();
                    file.MimeType = "application/pdf";
                    file.Base64Data = "base64-data=" + pdfBase64;
                    pdf.myFile = file;
    
    
                    var jsonContent = JsonConvert.SerializeObject(pdf.myFile);
                    string baseUrl = "https://goodmorning-axa-dev.azure-api.net/upload";
    
                    HttpClient httpClient = new HttpClient();
    
                    httpClient.DefaultRequestHeaders
                        .Accept
                        .Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    
                    HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post,baseUrl);
                    requestMessage.Content = new StringContent(jsonContent,Encoding.UTF8,"application/json");
                    requestMessage.Headers.Add("x-axa-api-key",apiKey);
    
                    HttpResponseMessage responseMessage = await httpClient.SendAsync(requestMessage);
                    string responseAsstring = await responseMessage.Content.ReadAsstringAsync();
    
                    if (responseAsstring != null)
                    {
                        Console.WriteLine(responseAsstring);
                    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)