How to disable the "Expect: 100 continue" header in HttpWebRequest for a single request?
HttpWebRequest
automatically appends an Expect: 100-continue
header for POST requests. Various sources around the internet suggest that this can be disabled as follows:
System.Net.ServicePointManager.Expect100Continue = false;
However, I'm writing a library and I cannot disable this for the entire appdomain, in case the application relies on this behaviour. Nor can I assume that it will remain set to this value. How can I disable it for a specific request?
The HttpWebRequest
class has a property called ServicePoint
which can be used to change this setting for a specific request. For example:
var req = (HttpWebRequest) WebRequest.Create(...);
req.ServicePoint.Expect100Continue = false;
If you also need to set a proxy, make sure to do that first. Otherwise Expect100Continue will be reverted to true again. So:
HttpWebRequest webRequest = WebRequest.CreateHttp(_url);
webRequest.Proxy = new WebProxy(_proxyHost, _proxyPort);
webRequest.ServicePoint.Expect100Continue = false;