如何让System.Net.Http.HttpClient不遵循302重定向?
使用NuGet的HttpClient 。
该应用程序使用client.PostAsync()发送post。 我希望它不要遵循302重定向。
怎么样?
我想我可以按照这个答案中的描述设置AllowAutoRedirect
。
但是如何在PostAsync()调用中使用HttpWebRequest
呢?
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 response = httpClient.GetAsync("http://www.google.com");
添加汉斯的回答:
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/