私はPDFを返すべきWeb APIサービスを持っています。
次に、WebAPIメソッドを呼び出してPDFを読み込もうとしています。ここでWebAPIからpdfを渡し、pdfをMVCコントローラから読み取るには?
は私のAPIの方法である:
[HttpPost]
[Route("GetTestPDF")]
public HttpResponseMessage TestPDF()
{
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(new FileStream(@"C:\MyPath\MyFile.pdf", FileMode.Open, FileAccess.Read));
response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = "MyFile.pdf";
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
return Request.CreateResponse(HttpStatusCode.OK, response);
}
しかし私は、PDFの内容が表示されていない応答を読み取るために行くとき。私はこれでどこが間違っているのか分かりません。
コントローラ方法:
public ActionResult GetPDF()
{
var response = new HttpResponseMessage();
using (HttpClient httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri(@"my local host");
response = httpClient.PostAsync(@"api/job/GetTestPDF", new StringContent(string.Empty)).Result;
}
var whatisThis = response.Content.ReadAsStringAsync().Result;
return new FileContentResult(Convert.FromBase64String(response.Content.ReadAsStringAsync().Result), "application/pdf");
}
私はwhatisThis変数を調べると、私はコンテンツタイプと、正しく私のAPIから設定されているコンテンツdispostionを参照してください。しかし、PDFの内容は表示されません。
どのようにしてPDFコンテンツを読むことができますか?
編集:私は私が見る私のMVCのサイトで文字列としてコンテンツを読めば
。私はWebAPIのを通じて段階と、それが正常に読み込み、ファイルの内容とresponse.Contentを設定している
{"Version":{"_Major":1,"_Minor":1,"_Build":-1,"_Revision":-1},"Content":{"Headers":[{"Key":"Content-Disposition","Value":["attachment; filename=MyFile.pdf"]},{"Key":"Content-Type","Value":["application/pdf"]}]},"StatusCode":200,"ReasonPhrase":"OK","Headers":[],"RequestMessage":null,"IsSuccessStatusCode":true}
(私は、ファイルの実際の内容は表示されません)。それでも
これはWebAPIの側またはMVC側の問題であるかどうかわかりません。
:ここ
は、それはあなたに非常に似ていますが、ContentDispositionのものが欠落し、エンドポイント・コードであります、そしてpdfとして働いていますか? –FileContentResultのコンストラクタはバイト配列をとっているようですので、レスポンスの内容をそのまま読み込むことができます。そうすれば、文字列として読み込む代わりに、 'return new FileContentResult(response.Content.ReadAsByteArrayAsync()。Result"アプリケーション/ pdf "); ' –
Hmm。私は文書の実際の内容以外は全てを見ます。私は提案を変更し、エラー文書を%pdfで始まらないようにしました – PrivateJoker