HttpWebRequest
は、POSTリクエストにExpect: 100-continue
ヘッダーを自動的に追加します。インターネットのさまざまなソースは、これを次のように無効にできることを示唆しています。
System.Net.ServicePointManager.Expect100Continue = false;
ただし、ライブラリを書いているので、アプリケーションがこの動作に依存している場合、appdomain全体でこれを無効にすることはできません。また、この値に設定されたままになると想定することもできません。特定のリクエストに対して無効にするにはどうすればよいですか?
HttpWebRequest
クラスにはServicePoint
というプロパティがあり、特定のリクエストに対してこの設定を変更するために使用できます。例えば:
var req = (HttpWebRequest) WebRequest.Create(...);
req.ServicePoint.Expect100Continue = false;
プロキシも設定する必要がある場合は、必ず最初に設定してください。それ以外の場合、Expect100Continueは再びtrueに戻ります。そう:
HttpWebRequest webRequest = WebRequest.CreateHttp(_url);
webRequest.Proxy = new WebProxy(_proxyHost, _proxyPort);
webRequest.ServicePoint.Expect100Continue = false;