在ASP.Net Core 2.0中,如何使用Response.Redirect()
重定向到第三方URL时发布数据?
注意:我必须在不使用查询字符串的情况下发布此数据。
Response.Redirect触发GET请求,这意味着唯一的选项是使用查询字符串。您是否可以从客户端(如果有)触发重定向以发出POST请求?
如果要在不使用查询字符串的情况下发布数据,则必须使用object。
[HttpPost]
public IActionResult Search([FromBody] CustomerSearchRequestApiModel request)
{
if (request == null)
{
return BadRequest();
}
return Ok(request);
}
使用Response.Redirect()
发送Post
请求是不可能的。
要解决此问题,您可以尝试使用HttpClient
发送Post
请求,然后使用ContentResult
作为text/html
将响应返回到Web浏览器。
这是一个演示代码:
public async Task<ContentResult> HtmlView()
{
using (var formDataContent = new MultipartFormDataContent())
{
HttpClient client = new HttpClient();
Article article = new Article { ArticleName = "AN" };
formDataContent.Add(new StringContent("AN", Encoding.UTF8, "application/json"), "ArticleName");
using (HttpClient httpClient = new HttpClient())
{
HttpResponseMessage response = await httpClient.PostAsync(@"https://localhost:44393/Articles/Create", formDataContent);
return new ContentResult
{
ContentType = "text/html",
StatusCode = (int)response.StatusCode,
Content = await response.Content.ReadAsStringAsync()
};
}
}
}
注意
更改HttpClient
部件以使用验证参数将正确的请求发送到您自己的第三方URL。