Java HTTP全双工

Dis*_*tum 5 java post http jax-rs httpurlconnection

我有一个在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,但我还没有找到任何表明它可能的东西,所以我不确定我是否在浪费时间.

Alf*_*rio 3

您不应该在读取后写入更多数据,因为这不遵循HTTP 协议InputStream的本质,即Request-Response。在这里查看更多信息。