2012-05-04 16 views
20

HttpClient from NuGetを使用してください。302リダイレクトに従わないようにSystem.Net.Http.HttpClientを取得するにはどうすればよいですか?

アプリはclient.PostAsync()で投稿を送信します。私はそれが302のリダイレクトに従わないことを望みます。

どのようにですか?

私は、をthis answerのように設定することができます。

しかし、私はHttpWebRequestをPostAsync()コールで使用するにはどうすればよいですか?

答えて

30

HttpClientコンストラクタのオーバーロードの1つに、 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"); 
+0

OK感謝。つまり、コールごとに302追従動作を指定することはできません。これはper-handlerです。つまり、HttpClientのインスタンスごとに発生します。はい? – Cheeso

+0

はい、HttpClientのインスタンスごとです。 2つの呼び出しの間にAllowAutoRedirectプロパティを変更しようとすると、例外が発生します。 – Hans

関連する問題