在同一连接上创建2个http请求

问题描述:

我想在同一个连接(HTTP持久连接)上创建2个HTTP请求。在同一连接上创建2个http请求

我使用的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); 

我想,如果我用request再次会造成我不想做一个整体的新的HTTP连接。

是否有另一个班我可以使用isntead还是有什么我失踪?

我也不确定WebClient类如何处理持久连接。

+0

您的代码无法正确读取响应。看到我的答案。 – SLaks 2010-10-31 16:31:53

设置KeepAlive property

例如:

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

我如何在同一连接中发出第二个请求? – 2010-10-31 16:30:12

+0

.Net框架应该自动重新使用连接。 – SLaks 2010-10-31 16:31:24

+0

所以连接就像HttpWebRequest的静态属性,我需要控制何时有持久连接,何时不通过多个线程使用不同的HttpWebRequests。 – 2010-10-31 16:32:30

,如果你想从一个的HttpRequest让你的服务器会话到下一个

,你必须明确地存储和与msinet.ocx该做这一切为您发送会话标识符,不像。例如当连接到一个PHP网络服务器时,会话标识符被存储在标题为Set-Cookie/PHPSESSID = ...的头部中,并且这个头部必须手动添加到下一个httprequest中,但是重命名为Cookie/PHPSESSID = ...