[Net] http: как узнать размер данных, если поле Content-Length отсутствует?10.12.02 15:26 Число просмотров: 1338 Автор: Dude Статус: Незарегистрированный пользователь
То есть RFC 1945 (HTTP 1.0, ибо в примере ты указал именно его)
"If a Content-Length header field is present, its value in bytes represents the length of the Entity-Body. Otherwise, the body length is determined by the closing of the connection by the server. "
"...В противном случае длина определяется закрытием подключения сервером."
Написал небольшую прогу - хочу просмотреть http трафик между IE и proxy-сервером. Т.е. вместо IE <=> PROXY сделать IE <=> ME <=> PROXY.
Проблема в чтении данных с прокси-сервера.
Когда в заголовке есть поле Content-Length, я считываю N-е количество байт, идущих после заголовка и возвращаю их в IE. С этим проблем нет.
Когда поля Content-Length нет, то размер данных, следующих за заголовком, не известен. По идее должен быть цикл вроде
while (true)
{
nBytesRead = read_from_proxy( buf );
write_to_IE( buf, 0, nByteRead );
if (nBytesRead < buf.length) break;
}
Далее идут html-данные, которые в каком-то месте обрываются.
Обрываются они потому, что на каком-то очередном шаге я получаю количество считанных в буфер байт меньше чем размер самого буфера, и решаю, что данные закончились, отдаю этот буфер IE и жду от него очередной команды.
А IE ничего не посылает, потому что ждет окончания блока данных.
Прога написана на Jave, но думаю это не принципиально
Как узнать размер блока данных, следующих за заголовком???
[Net] http: как узнать размер данных, если поле Content-Length отсутствует?10.12.02 15:26 Автор: Dude Статус: Незарегистрированный пользователь
То есть RFC 1945 (HTTP 1.0, ибо в примере ты указал именно его)
"If a Content-Length header field is present, its value in bytes represents the length of the Entity-Body. Otherwise, the body length is determined by the closing of the connection by the server. "
"...В противном случае длина определяется закрытием подключения сервером."