NuGetのHttpClient を使用します。
アプリはclient.PostAsync()で投稿を送信します。 302リダイレクトに従わないようにしたいと思います。
どうやって?
この回答 で説明されているように、AllowAutoRedirect
を設定できると思います。
しかし、PostAsync()呼び出し内で使用されるHttpWebRequest
を取得するにはどうすればよいですか?
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");
ハンスの答えに追加するには:
WebRequestHandlerはHttpClientHandlerから派生しますが、通常は完全な.NETでのみ使用可能なプロパティを追加します。 WebRequestHandlerはSystem.Net.Http DLLではなく、System.Net.Http.WebRequest DLLに含まれているため、明示的に次のように含める必要があります。表示するための参照。それ以外の場合は表示されません。
新しいDLLを追加したくない場合は、HttpClientHandlerを使用できます。
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.AllowAutoRedirect = false;