应用程序使用client.PostAsync()发送Post请求。我希望它不遵循302重定向。
如何实现呢?
我想我可以按照这个答案所述,设置AllowAutoRedirect
来实现。
但是怎样才能获取在PostAsync()调用中使用的HttpWebRequest
呢?
应用程序使用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<HttpResponseMessage> response = httpClient.GetAsync("http://www.google.com");
补充Hans的答案:
WebRequestHandler是从HttpClientHandler继承而来,但添加了通常仅在完整的.NET上可用的属性。 WebRequestHandler未包含在System.Net.Http DLL中,而是包含在System.Net.Http.WebRequest DLL中,因此您必须显式将其作为引用包含,才能看到它。否则它不会出现。
如果您不想添加新DLL,则可以选择使用HttpClientHandler:
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.AllowAutoRedirect = false;