Удалить заголовки HTTP из необработанного ответа - PullRequest
1 голос
/ 28 апреля 2010

Допустим, мы делаем запрос к URL и получаем необработанный ответ, например:

HTTP / 1.1 200 OK
Дата: среда, 28 апреля 2010 14:39:13 GMT
Истекает: -1
Cache-Control: приватный, max-age = 0
Content-Type: text / html; кодировка = ISO-8859-1
Cookie-набор: PREF = ID = e2bca72563dfffcc: TM = 1272465553: LM = 1272465553: S = ZN2zv8oxlFPT1BJG; истекает = пт, 27 апреля 2012 г. 14:39:13 GMT; Путь = /; домен = .google.co.uk
Сервер: gws
X-XSS-защита: 1; Режим = блок
Подключение: закрыть

<!doctype html><html><head>...</head><body>...</body></html>

Как лучше всего удалить заголовки HTTP из ответа в C #? С регулярными выражениями? Разобрать его в какой-то объект HTTPResponse и использовать только тело?

EDIT:

Я использую SOCKS, чтобы сделать запрос; вот почему я получаю грубый ответ.

Ответы [ 3 ]

4 голосов
/ 28 апреля 2010

Заголовки и тело разделены пустой строкой. это действительно легче сделать без RE. Просто найдите первую пустую строку.

1 голос
/ 12 июня 2010

Обратите внимание, что при использовании метода подстроки вы получите возврат каретки вперед. Я использовал это:

 string HTTPHeaderDelimiter = "\r\n\r\n";
 if (RawHTTPResponse.IndexOf("HTTP/1.1 200 OK") > -1)
    {
       HTTPPayload = RawHTTPResponse.Substring(RawHTTPResponse.IndexOf(HTTPHeaderDelimiter)+HTTPHeaderDelimiter.Length);
    }
    else
    {
       return;
    }
1 голос
/ 28 апреля 2010

Если вы используете HttpWebrequest класс, вы получаете HttpWebResponse возвращенный объект, который в свою очередь содержит коллекцию Заголовков . Затем вы можете удалить их, проанализировать или сделать с ними все, что пожелаете.

...