В рамках набора интеграционных тестов, который я пишу, я хочу подтвердить, что мой сервер ведет себя правильно, когда клиентский HTTP-запрос завершается раньше, чем все данные ответа были отправлены.

Можно ли создать HTTP-запрос и завершить его после получения всего нескольких байтов данных на C #?

1
Karl 24 Авг 2009 в 17:02
1
Вы имеете в виду «до того, как будут отправлены все данные запроса »?
 – 
Vinay Sajip
24 Авг 2009 в 17:12
Нет, я хочу, чтобы запрос был успешно отправлен, но затем я хочу разорвать соединение до того, как все данные ответа будут отправлены обратно с сервера. Визуализация останавливает загрузку файла до ее завершения.
 – 
Karl
24 Авг 2009 в 17:15

3 ответа

Лучший ответ

Я нашел решение, которое мне подходит. Я просто закрываю ответ после его получения. Кажется, это оставляет меня с заголовками ответов, но закрывает соединение до того, как сервер завершит отправку.

var response = request.getResponse();
response.Close();

// Assert that server has dealt with closed response correctly
0
Karl 24 Авг 2009 в 17:43

Вам не нужно читать все байты для ответа. Просто прочтите столько байтов, сколько хотите, а затем вернитесь из теста.

Вы можете сделать это примерно так:

Stream myStream = resp.GetResponseStream();
myStream.Read(bufferArray, 0, 1); //read 1 byte into bufferArray
return;

Вы можете найти полезную документацию по WebReponse .

2
Esteban Araya 24 Авг 2009 в 17:33
Да, у меня это работает очень хорошо! Хотя в моем случае меня не интересуют какие-либо конкретные данные ответа, поэтому просто закройте поток, не читая его.
 – 
Karl
24 Авг 2009 в 17:44
@ Карл, ты прав; убедитесь, что вы правильно окунули ответ.
 – 
Esteban Araya
24 Авг 2009 в 17:54

Просто запустите вызов асинхронно, используя, скажем, фонового работника, а затем закройте поток / канал.

0
Preet Sangha 24 Авг 2009 в 17:22
Вам не нужен поток / bgworker. Если вы хотите сделать это асинхронно, вы можете использовать методы WebRequest BeginGetResponse и EndGetResponse: msdn .microsoft.com / en-us / library / 86wf6409.aspx.
 – 
Ravi
24 Авг 2009 в 17:27