【发布时间】:2012-05-04 18:03:23
【问题描述】:
应用程序使用 client.PostAsync() 发送帖子。我希望它不遵循 302 重定向。
怎么样?
我想我可以按照this answer 中的描述设置AllowAutoRedirect。
但是如何在 PostAsync() 调用中使用 HttpWebRequest?
【问题讨论】:
标签: c# dotnet-httpclient
应用程序使用 client.PostAsync() 发送帖子。我希望它不遵循 302 重定向。
怎么样?
我想我可以按照this answer 中的描述设置AllowAutoRedirect。
但是如何在 PostAsync() 调用中使用 HttpWebRequest?
【问题讨论】:
标签: c# dotnet-httpclient
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");
【讨论】:
补充汉斯的回答:
WebRequestHandler 派生自 HttpClientHandler 但添加了属性 通常仅在完整的 .NET 上可用。 WebRequestHandler 不包含在 System.Net.Http DLL 中,而是包含在 System.Net.Http.WebRequest DLL,因此您必须明确包含它 作为参考,以便看到它。否则不会显示。
如果您不想添加新的 DLL,您可以直接使用 HttpClientHandler:
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.AllowAutoRedirect = false;
【讨论】: