В рамках набора интеграционных тестов, который я пишу, я хочу подтвердить, что мой сервер ведет себя правильно, когда клиентский HTTP-запрос завершается раньше, чем все данные ответа были отправлены.
Можно ли создать HTTP-запрос и завершить его после получения всего нескольких байтов данных на C #?
3 ответа
Я нашел решение, которое мне подходит. Я просто закрываю ответ после его получения. Кажется, это оставляет меня с заголовками ответов, но закрывает соединение до того, как сервер завершит отправку.
var response = request.getResponse();
response.Close();
// Assert that server has dealt with closed response correctly
Вам не нужно читать все байты для ответа. Просто прочтите столько байтов, сколько хотите, а затем вернитесь из теста.
Вы можете сделать это примерно так:
Stream myStream = resp.GetResponseStream();
myStream.Read(bufferArray, 0, 1); //read 1 byte into bufferArray
return;
Вы можете найти полезную документацию по WebReponse .
Просто запустите вызов асинхронно, используя, скажем, фонового работника, а затем закройте поток / канал.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.