Вопрос по разбору ПОСТ запросов. Руководствуясь RFC 2616 (Hypertext Transfer Protocol -- HTTP/1.1), как я понял, между POST-заголовком и телом ДОЛЖНО быть CRLFCRLF (тобишь дабл перевод на новую строку). Почему тогда при использовании .NET генерит запрос с одним CRLF после заголовка?
пример как должно быть (наверное
"POST
http://host.ru:80 HTTP/1.1
BLA-BLA-BLA"
пример как есть
"POST
http://host.ru:80 HTTP/1.1
BLA-BLA-BLA"
Здравствуйте, Kowak, Вы писали:
K>пример как должно быть (наверное
K>"POST http://host.ru:80 HTTP/1.1
K>BLA-BLA-BLA"
K>пример как есть
K>"POST http://host.ru:80 HTTP/1.1
K>BLA-BLA-BLA"
RCF 2616:
" generic-message = start-line
*(message-header CRLF)
CRLF
[ message-body ]
"
Пустая строка (двойной CRLF) идет не после начальной строки (start line, заголовка), а перед телом сообщения (message body). После start line могут (и скорее всего они там есть) идти хедеры (message headers). Я так думаю, что K>BLA-BLA-BLA — это и есть хедеры.
То есть, чтобы добраться до тела, нужно пропарсить хедеры, попутно выяснив размер тела (см. RFC 2616, 4.4 Message Length).
P.S. Нужно не забывать при парсинге, что некоторые сервера и клиенты вместо CRLF могут использовать просто LF (или даже CR)