我试图通过GET请求下载跨越两个API的PDF文件。
如果直接使用API2,PDF下载代码可以正常下载:
Stream fileStream = File.Open(fileLocation, FileMode.Open);
result.Content = new StreamContent(fileStream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "test.pdf"
};
return result;
然而,当我把API1扔进混合物时,事情变得有些不可思议!!
using (System.Net.Http.HttpClient client = new System.Net.Http.HttpClient())
{
var httpRequestMessage = new HttpRequestMessage();
httpRequestMessage.Method = HttpMethod.Get;
httpRequestMessage.RequestUri = new Uri(requestUrl);
HttpResponseMessage response = await client.SendAsync(httpRequestMessage);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
var content = await response.Content.ReadAsStringAsync();
response.Content = new StringContent(content);
response.EnsureSuccessStatusCode();
response.Content.Headers.ContentEncoding.Add("UTF8");
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "test.pdf"
};
return response;
直接进入API2会产生:%PDF-1.6%ãÏÓ
通过API2生成:%PDF-1.6%
我尝试在API1上更改ContentType和ContentEncoding,没有任何乐趣。
有什么事情可以跳到任何人身上吗?
答案 0 :(得分:3)
在二进制文档上调用.ReadAsStringAsync
不起作用 - 您必须调用.ReadAsByteArrayAsync
。
您还必须使用ByteArrayContent
代替StringContent
。
未经过测试