在Java中使用Http连接时,我们为什么要在写入之前总是进行读取调用?

时间:2012-10-11 11:19:18

标签: java http inputstream outputstream

我有一个数据包要通过Http连接从客户端1发送到客户端2。让我们调用这个数据包1.我不希望客户端2对数据包1有任何回复。我现在想要发送数据包2.如果我尝试将数据包2写入连接而不读取为数据包1发送的回复,我得到一个例外。当我对看到的内容不感兴趣时​​,为什么要读取数据包1的响应呢?

1 个答案:

答案 0 :(得分:4)

如果您使用的是HTTP,则需要符合HTTP Specification中规定的HTTP协议。这表示客户端向服务器发送请求消息,服务器发送响应。客户端需要在连接上发送另一个请求之前完全读取该响应。

  

所以如果没有读取先前请求的响应,我就无法编写请求吗?

没有。这将违反协议。 可能可以为一个或两个请求工作,但最终连接的服务器到客户端将“备份”并且事情会中断。 HTTP不应该以这种方式工作。

如果您不想符合HTTP的要求,您应该使用不同的协议......或者发明您自己的应用程序特定协议。


目前尚不清楚为什么要立即获得例外。 (您没有提到异常是什么,或者您正在使用哪个客户端HTTP库。)但我期望该异常来自HTTP实现,告诉您正在使用API不正确。