Обработчик .NET HTTP Как отправить собственный ответ?

Я преобразовал свой собственный (на основе сокетов) сервер в обработчик HTTP в IIS (.NET 4.0).

Я преобразовал свой клиент для отправки HTTP GET в правильном формате.

Я не хочу изменять код обработки ответов моего клиента для анализа HTML-кода. Это боль в тылу, которая также не нужна. Мне не нужно, чтобы этот сервер работал с браузером или был совместим с чем-либо, кроме моего клиента.

Итак, мне в основном нужен обработчик HTTP (сервер) для отправки ответа, который ожидает клиент, - без "HTML/1.0", заголовков и многого другого.

В данный момент я использую метод HttpContext.Response.Write(). Я полагаю, что есть либо способ записать необработанные данные в ответ, либо способ удалить все заголовки и теги HTML вокруг данных, которые я хочу отправить.

Заранее благодарю за любую помощь. Дэйв


person Jin    schedule 03.09.2011    source источник


Ответы (1)


Если вы просматриваете это в браузере, чтобы проверить, то, возможно, вы видите, что браузеры пытаются исправить ваш HTML-код за вас.

Например, если у меня есть это в моем обработчике:

public void ProcessRequest(HttpContext context)
{
    context.Response.Write("Hello World");
}

Тогда заголовки ответов будут выглядеть так:

HTTP/1.1 200 OK. Cache-Control: private
Content-Type: text/html; charset=utf-8
Длина содержимого: 11
Соединение: Закрыть

Фактическое содержание ответа просто

Привет, мир

Вы заметите, что тип контента по умолчанию — text/html, однако в основном вы имеете полный контроль над ответом. Вы можете очистить заголовки, добавить новые и соответствующим образом установить тип контента:

public void ProcessRequest(HttpContext context)
{
    context.Response.ClearHeaders();
    context.Response.AddHeader("my-skillz", "being AWESOME!");
    context.Response.ContentType = "text/plain";
    context.Response.Write("Hello World");
}

Что даст следующие заголовки ответа:

HTTP/1.1 200 OK. my-skillz: быть ПОТРЯСАЮЩИМ!
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Длина содержимого: 11
Соединение: Закрыть

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

person Josh    schedule 03.09.2011
comment
Вы правы насчет ‹html›‹body›...‹/body›‹/html›. Браузер добавлял это. Однако заголовки все еще там. Не беспокойтесь, я думаю. Это не ужасная модификация клиента. Все, что мне нужно сделать, это использовать String.split(\r\n\r\n) и использовать вторую строку. - person Jin; 03.09.2011