На самом деле ваш код не правильный.
В HTTP 1.0 каждое соединение закрывается, и в результате клиент может определить, когда ввод закончился.
В HTTP 1.1 с постоянными соединениями базовое TCP-соединение остается открытым, поэтому клиент может определить, когда ввод заканчивается одним из следующих 2 способов:
1) HTTP-сервер помещает заголовок Content-Length
, указывающий размер ответа. Это может использоваться клиентом, чтобы понять, когда ответ был полностью прочитан.
2) Ответ отправляется в Chunked-Encoding
, что означает, что он приходит в чанках с префиксом размера каждого чанка. Клиент, использующий эту информацию, может создать ответ из чанков, полученных сервером.
Вы должны использовать библиотеку HTTP-клиента, поскольку реализация универсального HTTP-клиента не тривиальна (я бы даже сказал).
Чтобы быть конкретным в своем опубликованном коде, вы должны следовать одному из указанных выше подходов.
Кроме того, вы должны читать в строках, так как HTTP - это протокол, завершающийся строкой.
т.е. что-то вроде:
BufferedReader in =new BufferedReader(new InputStreamReader( Connection.getInputStream() ) );
String s=null;
while ( (s=in.readLine()) != null) {
//Read HTTP header
if (s.isEmpty()) break;//No more headers
}
}
Посылая Connection: close
, как предложено Хачиком, выполняет свою работу (поскольку закрытие соединения помогает определить конец ввода), но производительность ухудшается, потому что для каждого запроса вы запускаете новое соединение.
Конечно, это зависит от того, что вы пытаетесь сделать (если вам неважно)