Итак, проблема в том, что у меня есть gzipped соединение с удаленным http-сервером потоковой передачи, который выбрасывает данные с высокой скоростью, и я хочу обработать каждую строку данных.
Соединение устанавливается через Apache ContentEncodingHttpClient, который подключается правильно, и я извлекаю InputStream через:
InputStream is = response.getEntity().getContent();
Это работает правильно. Теперь я хочу обработать его, моя функция, кажется, ожидает окончания потока, чего он никогда не делает.
final String result = convertStreamToString(is, "UTF-8");
new Thread(){
public void run(){
r.gotResponse(result);
}
}.start();
Функция преобразования в строку:
public String convertStreamToString( InputStream is, String ecoding ) throws IOException
{
StringBuilder sb = new StringBuilder( Math.max( 16, is.available() ) );
char[] tmp = new char[ 4096 ];
try {
InputStreamReader reader = new InputStreamReader( is, ecoding );
for( int cnt; ( cnt = reader.read( tmp ) ) > 0; )
sb.append( tmp, 0, cnt );
} finally {
is.close();
}
return sb.toString();
}
Может ли кто-нибудь указать мне правильное направление для обработки контента по мере поступления?
EDIT
Я только что заставил его работать, который обрабатывает каждую строку вместо добавления каждой.
BufferedReader in = new BufferedReader(new InputStreamReader(is));
return in.readLine();
enter code here