2010-10-31 2 views
0

Я хотел бы создать 2 HTTP-запроса на одно и то же соединение (постоянное соединение 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

ответ

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

И как мне сделать второй запрос в этом же соединении? –

+0

. .Net framework должен автоматически повторно использовать соединение. – SLaks

+0

, так что соединение похоже на статическое свойство HttpWebRequest, я как бы нуждаюсь в контроле того, когда нужно иметь постоянные соединения, а когда не через несколько потоков, используя разные HttpWebRequests. –

1

если вы хотите сохранить сеанс сервера от одного HttpRequest к другому, вы должны явно сохранить и отправить идентификатор сеанса, в отличие от msinet.ocx, которая делает все это для вас , например, при подключении к веб-серверу php идентификатор сеанса хранится в заголовке с надписью Set-Cookie/PHPSESSID = ... и этот заголовок должен быть добавлен вручную в следующий httprequest, но переименован в Cookie/PHPSESSID = ... .