我想使用HttpURLConnection通过HTTP POST打开与服务器的长期连接,并在流入时处理流数据。这适用于Android项目。
我不清楚如何使用HttpURLConnection执行此操作。在iOS中,NSURLConnection提供了一种异步模式,当新数据进入并可用于解析时,将调用用户实现的回调。
使用Java中的HttpURLConnection,我看到有一个available()方法返回可以读取的字节数。但是,我不清楚如何编写一个打开连接的流应用程序,并在新的流数据可用于解析DataInputStream时作出反应。
我很感激一些意见。 HttpURLConnection或Java中的替代类是否支持HTTP连接的非阻塞,异步处理?
由于
答案 0 :(得分:5)
经过更多的研究,我已经确认Java没有对异步HTTP的任何内置支持。一个名为Jetty的打包包含一个带有内置异步HTTP和回调的HTTP客户端。可在以下网址找到:
答案 1 :(得分:1)
创建一个扩展Observable
并实现Runnable
的对象。您的主应用程序实现了Observer
并将其自身作为观察者添加到您的新对象中。
在新线程中运行您的对象。它阻止HTTPUrlConneciton上的读取并通过观察者通知刚刚读取的数据。
答案 2 :(得分:1)
有一个可用的()方法 返回可以的字节数 阅读
不,没有。有一个可用的()方法返回可以在不阻塞的情况下读取的字节数。完全没有相同的东西。
HttpURLConnection听起来不适合这项任务。 HTTP是一种请求 - 响应协议,而不是流协议,至少在Java类中实现。