使用HttpURLConnection流式传输数据

时间:2011-03-31 03:20:49

标签: java android streaming httpurlconnection

我想使用HttpURLConnection通过HTTP POST打开与服务器的长期连接,并在流入时处理流数据。这适用于Android项目。

我不清楚如何使用HttpURLConnection执行此操作。在iOS中,NSURLConnection提供了一种异步模式,当新数据进入并可用于解析时,将调用用户实现的回调。

使用Java中的HttpURLConnection,我看到有一个available()方法返回可以读取的字节数。但是,我不清楚如何编写一个打开连接的流应用程序,并在新的流数据可用于解析DataInputStream时作出反应。

我很感激一些意见。 HttpURLConnection或Java中的替代类是否支持HTTP连接的非阻塞,异步处理?

由于

3 个答案:

答案 0 :(得分:5)

经过更多的研究,我已经确认Java没有对异步HTTP的任何内置支持。一个名为Jetty的打包包含一个带有内置异步HTTP和回调的HTTP客户端。可在以下网址找到:

http://wiki.eclipse.org/Jetty/Tutorial/HttpClient

答案 1 :(得分:1)

创建一个扩展Observable并实现Runnable的对象。您的主应用程序实现了Observer并将其自身作为观察者添加到您的新对象中。

在新线程中运行您的对象。它阻止HTTPUrlConneciton上的读取并通过观察者通知刚刚读取的数据。

答案 2 :(得分:1)

  

有一个可用的()方法   返回可以的字节数   阅读

不,没有。有一个可用的()方法返回可以在不阻塞的情况下读取的字节数。完全没有相同的东西。

HttpURLConnection听起来不适合这项任务。 HTTP是一种请求 - 响应协议,而不是流协议,至少在Java类中实现。