29

使用来自 NuGet 的 HttpClient

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

如何?

我想我可以按照这个答案AllowAutoRedirect中的描述进行设置。

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

4

2 回答 2

47

构造函数的重载之一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");
于 2012-05-05T18:37:37.727 回答
13

添加到汉斯的答案:

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/

于 2018-06-20T19:20:10.760 回答