webentwicklung-frage-antwort-db.com.de

Wie deaktiviere ich den Header "Expect: 100 continue" in HttpWebRequest für eine einzelne Anforderung?

HttpWebRequest fügt automatisch ein Expect: 100-continue Header für POST Requests. Verschiedene Quellen im Internet legen nahe, dass dies wie folgt deaktiviert werden kann:

System.Net.ServicePointManager.Expect100Continue = false;

Ich schreibe jedoch eine Bibliothek und kann diese nicht für die gesamte App-Domäne deaktivieren, falls sich die Anwendung auf dieses Verhalten stützt. Ich kann auch nicht davon ausgehen, dass es auf diesem Wert bleiben wird. Wie kann ich es für eine bestimmte Anfrage deaktivieren?

41
Roman Starkov

Die Klasse HttpWebRequest verfügt über eine Eigenschaft namens ServicePoint, mit der diese Einstellung für eine bestimmte Anforderung geändert werden kann. Beispielsweise:

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

Wenn Sie auch einen Proxy einrichten müssen, stellen Sie sicher, dass Sie dies zuerst tun. Andernfalls wird Expect100Continue wieder auf true zurückgesetzt. So:

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