Comment envoyer KeepAlive en-tête correctement en c#?
J'ai besoin d'envoyer une requête comme ceci en utilisant HttpWebRequest:
POST https://sap.site.com.mx/sap/bw/BEx?SAP-LANGUAGE=ES&PAGENO=1&CMD=PROCESS_VARIABLES&REQUEST_NO=0&CMD=PROCESS_VARIABLES&SUBCMD=VAR_SUBMIT&VARID= HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-MX,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cependant, je ne peux pas envoyer un en-tête de Connexion. C'est mon code:
//request
HttpWebRequest request = CreateWebRequestObject(url);
request.CookieContainer = this.cc;
request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2";
//headers
request.Headers.Add("Accept-Encoding", "gzip, deflate");
request.Headers.Add("Accept-Language", " es-MX,es;q=0.8,en-us;q=0.5,en;q=0.3");
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.KeepAlive = true; //it does not work as expected
request.ServicePoint.Expect100Continue = false; //remove Expect header
//post
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = buffer.Length;
using (Stream stream = request.GetRequestStream())
stream.Write(buffer, 0, buffer.Length);
Mais, lorsque je vérifie la demande dans un violon la propriété de Connexion n'apparaît pas.
En outre, ces postes ne fonctionne pas pour moi:
- Garder une connexion http vivant en C#?
- C# - Connection: keep-alive-Tête n'est Pas Envoyé au Cours de HttpWebRequest
Comment puis-je envoyer un en-tête de Connexion correctement?
Mise à JOUR
Cet add-Keep-Alive HTTP/1.0
request.ProtocolVersion = HttpVersion.Version10;
//request.KeepAlive = true; //not necessary
Lorsque le changement ProtocolVersion propriété HttpVersion.Version11, Keep-Alive-tête n'est pas d'envoyer:
request.ProtocolVersion = HttpVersion.Version11;
request.KeepAlive = true;
Comment puis-je envoyer Keep-Alive-tête à l'aide de Http/1.1?
En http1.1 KeepAlive est la valeur par défaut, non?
pas si vous utilisez ServicePointManager.Expect100Continue = false; d'ailleurs, d'avoir le même problème. Est-ce une .net bug?
pas si vous utilisez ServicePointManager.Expect100Continue = false; d'ailleurs, d'avoir le même problème. Est-ce une .net bug?
OriginalL'auteur auraham | 2012-03-05
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation de HTTP/1.1, Keep-Alive est activé par défaut.Réglage de KeepAlive à faux peut entraîner l'envoi d'un Connection: Close-tête pour le serveur.
OriginalL'auteur Dalamar81
J'ai eu le même bug avec le très semblable code, et la mise
N'a fixer. Êtes-vous sûr que vous n'exécutez ce code chaque fois que vous créez httpwebrequest?
OriginalL'auteur Arsen Zahray