[英]Java HTTP full duplex
我有一个在Jersey上运行的RESTful Web服务(GlassFish 3.1.1)。 这个有点不寻常 - 它使用HTTP流。 客户端和服务器有一个长时间运行的对话,在这些对话中,他们不断发送编码为XML标签的消息。 这样做的主要原因是服务器可以推送到客户端。
我有一个使用HttpURLConnection
的测试客户端。 问题是客户端的OutputStream
或服务器的InputStream
过早关闭。 当我尝试从客户端发送一些XML时,我会抛出一个ProtocolException
(读取输入后无法写入输出)。
当我使用WizTools RESTClient进行测试时,我可以发布XML请求,但此工具不允许保持连接活动。 但至少我知道Web服务至少在这种情况下正在运行。 (在流媒体场景中可能还不错;我的猜测是HttpURLConnection
让我失望。
有没有办法让HttpURLConnection保持活着并让我有机会实际向OutputStream
发送内容? 而且,最重要的是,有没有办法允许它继续写入OutputStream
即使它已经通过InputStream
接收数据?
更新:
看起来HttpURLConnection
强制执行HTTP的传统用法,即客户端在完全发送请求(并关闭输出流)之前无法处理响应。 是否存在允许请求和响应暂时重叠的替代方案? 我刚开始看Apache HttpClient,但我还没有找到任何表明它可能的东西,所以我不确定我是否在浪费时间。
从InputStream
读取后,您不应该写更多数据,因为这不符合HTTP协议的性质,即Request-Response 。 在这里查看更多内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.