How to disable the “Expect: 100 continue” header i

2020-05-19 06:01发布

问题:

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?

回答1:

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;


回答2:

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;