用于大响应的http异步响应

时间:2012-01-11 12:02:45

标签: android http asynchronous nio large-data

我熟悉android HTTPURLConnection和apache HTTPConnection类及其工作方式(它们都是同步的,但我可以忍受)。

我有一个很大的响应,从服务器传来许多行数据。这是一个JSON响应,我可以在解析所有响应之前部分显示数据。一些json解析器允许(如xcers允许xml)。与上面提到的两个类相关的回调和方法是否允许它?当我在打开输入流并读取时从HTTPURLConnection获得响应时,当 ALL 数据已存在时,是否打开流?或者我可以打开并阅读它以及应遵循的更多内容吗?

另外,Android上是否有与NIO一起使用的http方法?

2 个答案:

答案 0 :(得分:2)

使用HttpClient,当您打开响应流时,如下所示:

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

并开始阅读,您实际上开始下载,并在收到这些字节后立即获得新字节。你不要等待下载的所有内容开始阅读。

据我所知,与Android捆绑在一起的HttpClient并非基于NIO。我不知道有任何替代方案。

答案 1 :(得分:0)

除了Ladlestein评论中的所有可能的解决方案之外,还有一个简单的答案就是将所有这些解包在AsyncTask中。以下a sample project演示HTTP requestHttpClient中使用AsyncTask进行{{1}}。