http асинхронный ответ для большого ответа - PullRequest
3 голосов
/ 11 января 2012

Я знаком с классами Android HTTPURLConnection и apache HTTPConnection и с тем, как они работают (все они синхронны, но я могу с этим жить).с сервера.Это ответ в формате JSON, и я могу частично отобразить данные, прежде чем проанализировать весь ответ.Некоторые парсеры json позволяют это (например, xcers допускает xml).Позволяют ли это обратным вызовам и методам, связанным с двумя упомянутыми выше классами?Когда я получаю ответ от HTTPURLConnection после открытия входного потока и чтения, открываю ли я поток, когда ALL данные уже там?Или я могу открыть и прочитать его, и еще что следует?

Кроме того, есть ли на Android метод http, который работает с NIO?

Ответы [ 2 ]

2 голосов
/ 11 января 2012

С HttpClient, когда вы открываете поток ответов следующим образом:

HttpGet request = new HttpGet();
request.setURI(new URI(url));
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();

и начинайте чтение, вы фактически начинаете загрузку и получаете новые байты, как только они получены. Вы не ждете, пока все загрузится, чтобы начать читать.

Насколько я знаю, HttpClient в комплекте с Android не основан на NIO. Я не знаю ни одной альтернативы, которая делает это.

0 голосов
/ 11 января 2012

В дополнение ко всем возможным решениям в комментарии Ладлштейна, есть простой ответ, заключив все это в AsyncTask. Вот пример проекта , демонстрирующий выполнение HTTP request с использованием HttpClient в AsyncTask.

...