如何让System.Net.Http.HttpClient不遵循302重定向?

时间:2012-05-04 18:03:23

标签: c# dotnet-httpclient

使用HttpClient from NuGet

该应用使用client.PostAsync()发送帖子。我希望它不要遵循302重定向。

如何?

我想我可以像this answer中所述设置AllowAutoRedirect

但是如何在PostAsync()调用中使用HttpWebRequest

2 个答案:

答案 0 :(得分:35)

HttpClient构造函数的一个重载需要一个 WebRequestHandler论点。 HttpClient类使用此方法 WebRequestHandler用于发送请求。

WebRequestHandler类提供了一个名为AllowAutoRedirect的属性 配置重定向行为。将此属性设置为false 指示HttpClient不遵循重定向回复。

这是一个小代码示例:

WebRequestHandler webRequestHandler = new WebRequestHandler();

webRequestHandler.AllowAutoRedirect = false;

HttpClient httpClient = new HttpClient(webRequestHandler);

// Send a request using GetAsync or PostAsync

Task<HttpResponseMessage> response = httpClient.GetAsync("http://www.google.com");

答案 1 :(得分:4)

要添加到汉斯的答案中:

  

WebRequestHandler派生自HttpClientHandler,但添加了属性   通常仅在完整的.NET上可用。 WebRequestHandler   不包含在System.Net.Http DLL中,而是包含在   System.Net.Http.WebRequest DLL,因此您必须明确包含   以供参考。否则它将不会显示。

如果您不想添加新的DLL,则可以只使用HttpClientHandler:

    HttpClientHandler clientHandler = new HttpClientHandler();
    clientHandler.AllowAutoRedirect = false;

参考:https://blogs.msdn.microsoft.com/henrikn/2012/08/07/httpclient-httpclienthandler-and-webrequesthandler-explained/