如何在 HttpWebRequest 中为单个请求禁用 "Expect: 100 continue" 标头?



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;

也可以在config中重写:

<system.net>
    <settings>
        <servicePointManager expect100Continue="false"/>
    </settings>
</system.net>

相关内容

  • 没有找到相关文章

最新更新