使用Response.Redirect()重定向到第三方URL时发布数据

时间:2018-09-11 05:33:33

标签: asp.net asp.net-core

在ASP.Net Core 2.0中,如何在使用Response.Redirect()重定向到第三方URL的同时发布数据?

注意:我必须在不使用查询字符串的情况下发布此数据。

3 个答案:

答案 0 :(得分:1)

Response.Redirect触发GET请求,这意味着唯一的选择是使用查询字符串。 您可以触发来自客户端(如果有)的重定向以发出POST请求吗?

答案 1 :(得分:0)

如果要发布数据而不使用查询字符串,则必须使用object。

[HttpPost]
public IActionResult Search([FromBody] CustomerSearchRequestApiModel request)
{       
    if (request == null)
    {
        return BadRequest();    
    }

    return Ok(request);
}

答案 2 :(得分:0)

无法使用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。