我需要从下载一个文件。控制器接受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控制器发送POST请求到这个dotnet核心API控制器
我尝试过WebClient.UploadData(action, "POST", requestBytes);,其中requestBytes是使用BinaryFormatter获得的模型的字节数组,但是API控制器拒绝使用(406) Not Acceptable.
无论API控制器上的[Consumes("application/octet-stream")]如何,都会发生这种情况。
而且不存在允许WebClient.UploadData JSON的过载POSTing。
任何例子都将不胜感激。
发布于 2020-06-25 21:42:00
将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();https://stackoverflow.com/questions/62582368
复制相似问题