Я протестировал код, который вы написали на моем эмуляторе с Android 2.2, и он отлично работает. URL-адрес, который я использовал, был:
uri = new URI("http://www.httpwatch.com/httpgallery/chunked/");
Я заметил, что BasicResponseHandler
продолжает пытаться читать, пока не достигнет конца потока, и возвращает все данные целиком. Код может зависнуть в ожидании закрытия потока. Ваш веб-сервис заканчивает поток? или он продолжает возвращать куски навсегда? Я не вижу способа вернуть только первый чанк, но я написал простой обработчик, который просто читает первое чтение из входного потока (который при условии достаточно большого буфера соответствует чанку). В случае URI, который я использовал для тестирования, он возвращает каждую строку файла HTML в виде фрагмента. Вы можете видеть только первый, возвращенный сюда.
Если это работает для вас, то вы могли бы легко написать обработчик, который возвращает вместо строки, возвращает перечисление или какой-то другой объект, где вы могли бы вернуть каждый из кусков. Или даже ваш собственный класс.
public class ChunkedResponseHandler implements ResponseHandler<String> {
public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
HttpEntity entity = response.getEntity();
InputStream in = entity.getContent();
StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
int n = in.read(b);
out.append(new String(b, 0, n));
return out.toString();
}
}