我需要从dotnet Core Web API下载文件。控制器接受POST请求,如下所示:
[HttpPost]
[Route("api/pdf")]
//[Consumes("application/octet-stream")]
[Produces("application/pdf")]
public IActionResult GetPDF([FromBody] ReportRequest request)
{
//report generation logic
return new FileStreamResult(pdfMemoryStream, "application/pdf");
}
我不确定如何从ASP.NET MVC 5控制器向此dotnet核心API控制器发送POST请求
我试过使用来获取模型的字节数组WebClient.UploadData(action, "POST", requestBytes);
在哪里,但是API控制器拒绝它说requestBytes
BinaryFormatter
(406) Not Acceptable.
无论[Consumes("application/octet-stream")]
在API控制器上发生这种情况。
而且没有超载WebClient.UploadData
允许发布JSON。
任何例子将不胜感激。
将GetPdf方法更改为:
[Consumes("application/json")]
public IActionResult GetPDF([FromBody] ReportRequest request)
{
//report generation logic
return File(pdfMemoryStream.ToArray(), "application/pdf");
}
并使用HttpClient
代替WebClient
:
var client = new HttpClient();
string url = "https://localhost:44398/api/values/GetPdf";
var reportRequest = new ReportRequest()
{
Id = 1,
Type = "Billing"
};
var json = JsonConvert.SerializeObject(reportRequest);
var data = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, data);
response.EnsureSuccessStatusCode();
var bytes = await response.Content.ReadAsByteArrayAsync();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句