Вопрос по c# – Как я могу заставить System.Net.Http.HttpClient не выполнять перенаправления 302?

23

С помощьюHttpClient от NuGet.

Приложение отправляет сообщение с client.PostAsync (). Я хочу, чтобы он НЕ следовал 302 редиректам.

как?

Я полагаю, я могу просто установитьAllowAutoRedirect как описано вэтот ответ.

Но как мне получитьHttpWebRequest используется в вызове PostAsync ()?

Ваш Ответ

2   ответа
35

Одна из перегрузокHttpClient конструктор занимает WebRequestHandler аргумент.HttpClient класс использует это WebRequestHandler для отправки запросов.

WebRequestHandler класс предоставляет свойство под названиемAllowAutoRedirect to configure the redirect behaviour. Setting this property to false instructs the 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");
Error: User Rate Limit Exceeded Cheeso
Error: User Rate Limit Exceeded
3

WebRequestHandler derives from HttpClientHandler but adds properties that generally only are available on full .NET. The WebRequestHandler is not included in the System.Net.Http DLL but rather in System.Net.Http.WebRequest DLL so you have to explicitly include that as a reference in order to see it. Otherwise it won’t show up.

Вы можете просто перейти на HttpClientHandler, если не хотите добавлять новые библиотеки DLL:

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

Error: User Rate Limit Exceededhttps://blogs.msdn.microsoft.com/henrikn/2012/08/07/httpclient-httpclienthandler-and-webrequesthandler-explained/

Похожие вопросы