繁体   English   中英

Java HTTP全双工

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM