web-dev-qa-db-fra.com

Comment désactiver l'en-tête "Expect: 100 continue" dans HttpWebRequest pour une seule demande?

HttpWebRequest ajoute automatiquement un Expect: 100-continue en-tête pour POST. Diverses sources sur Internet suggèrent que cela peut être désactivé comme suit:

System.Net.ServicePointManager.Expect100Continue = false;

Cependant, j'écris une bibliothèque et je ne peux pas la désactiver pour l'ensemble du domaine d'application, au cas où l'application s'appuierait sur ce comportement. Je ne peux pas non plus supposer qu'il restera réglé sur cette valeur. Comment puis-je le désactiver pour une demande spécifique?

41
Roman Starkov

La classe HttpWebRequest possède une propriété appelée ServicePoint qui peut être utilisée pour modifier ce paramètre pour une demande spécifique. Par exemple:

var req = (HttpWebRequest) WebRequest.Create(...);
req.ServicePoint.Expect100Continue = false;
71
Roman Starkov

Si vous devez également définir un proxy, assurez-vous de le faire d'abord. Sinon, Expect100Continue sera de nouveau converti en true. Donc:

HttpWebRequest webRequest = WebRequest.CreateHttp(_url);
webRequest.Proxy = new WebProxy(_proxyHost, _proxyPort);
webRequest.ServicePoint.Expect100Continue = false;
19
AroglDarthu