2017-09-08 4 views
1

GETリクエストで2つのAPIを越えてPDFファイルをダウンロードしようとしています。GETリクエストを使用して2つのAPIにまたがるPDFをダウンロードする

私は以下のコードで微PDFのダウンロードAPI2へ直接行く場合:

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を投げるときしかし、物事が少しグラグラ取得! API2へ直接行く

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; 

の生成:%のPDF-1.6%âãÏÓ

API2を経由を生成する:%のPDF-1.6%

アイブとAPI1上のContentTypeとContentEncodingを変更しようとしました喜びはありません。

誰にでも何か飛び交いますか?

答えて

2

.ReadAsStringAsyncをバイナリドキュメントで呼び出すことはできません。.ReadAsByteArrayAsyncに電話する必要があります。 またStringContentの代わりにByteArrayContentを使用する必要があります。

は完璧に働い

+0

おかげでマイケル、テストされていません。私は、コードのブロックを見ていて、どれくらいの間、私はあなたに教えてくれません.....スクエアアイズ!!! – widget

関連する問題