2010-10-31 3 views
0

Je souhaite créer 2 requêtes HTTP sur la même connexion (connexion HTTP persistante).Création de 2 requêtes http sur la même connexion

J'utilise HttpWebRequest:

 WebRequest request = HttpWebRequest.Create("http://localhost:14890/Service1/3"); 
     WebResponse response = request.GetResponse(); 

     byte[] buffer = new byte[1024]; 
     int x = response.GetResponseStream().Read(buffer, 0, 1024); 
     string str = System.Text.ASCIIEncoding.ASCII.GetString(buffer); 

Je pense que si je l'utilise à nouveau request il va créer une nouvelle connexion HTTP ensemble que je ne veux pas faire.

Y at-il une autre classe que je peux utiliser isntead ou y at-il quelque chose qui me manque?

Je ne sais pas non plus comment fonctionne la classe WebClient par rapport aux connexions persistantes.

+0

Votre code ne sera pas correctement lire la réponse. Vois ma réponse. – SLaks

Répondre

1

Définissez le KeepAlive property.

Par exemple:

string str; 
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:14890/Service1/3"); 
request.KeepAlive = true; 
using (WebResponse response = request.GetResponse()) 
using (Stream responseStream = response.GetResponseStream()) 
using (StreamReader reader = new StreamReader(responseStream, Encoding.ASCII)) { 
    str = reader.ReadToEnd(); 
} 
+0

Et comment puis-je faire la deuxième requête dans cette même connexion? –

+0

Le framework .Net doit automatiquement réutiliser la connexion. – SLaks

+0

donc la connexion est comme une propriété statique de HttpWebRequest, j'ai besoin de contrôler quand avoir des connexions persistantes et quand ne pas via plusieurs threads tout en utilisant HttpWebRequests différentes. –

1

si vous voulez garder votre session de serveur d'un HTTPRequest à l'autre, vous devez stocker explicitement et envoyer votre identifiant de session, contrairement à Msinet.ocx qui fait tout pour vous . par exemple lors de la connexion à un serveur web php, l'identifiant de session est stocké dans un en-tête étiqueté Set-Cookie/PHPSESSID = ... et cet en-tête doit être ajouté manuellement au prochain httprequest mais renommé en Cookie/PHPSESSID = ...

Questions connexes