2010-10-31 77 views
0

我想在同一個連接(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

回答

1

設置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

1
,如果你想從一個的HttpRequest讓你的服務器會話到下一個

,你必須明確地存儲和與msinet.ocx該做這一切爲您發送會話標識符,不像。例如當連接到一個PHP網絡服務器時,會話標識符被存儲在標題爲Set-Cookie/PHPSESSID = ...的頭部中,並且這個頭部必須手動添加到下一個httprequest中,但是重命名爲Cookie/PHPSESSID = ...