我需要从 dotnet Core Web API 下载文件。 Controller 接受 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");
}
我不确定如何将 POST 请求从 ASP.NET MVC 5 Controller 发送到此 dotnet 核心 API Controller
我试过 WebClient.UploadData(action, "POST", requestBytes);
其中 requestBytes
是使用 BinaryFormatter< 获得的模型的字节数组
,但 API Controller 拒绝它说 (406) Not Acceptable。
这与 API Controller 上的 [Consumes("application/octet-stream")]
无关。
并且没有允许 POST JSON 的 WebClient.UploadData
重载。
任何例子将不胜感激。
最佳答案
将 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();
关于c# - 在 ASP.NET MVC 5 Controller 中使用 POST 从 dotnet Core Web API 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62582368/