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

标签 java http inputstream outputstream

我有一个数据包要通过 Http 连接从客户端 1 发送到客户端 2。让我们将此数据包称为数据包 1。我不希望客户端 2 对数据包 1 做出任何回复。我现在想要发送数据包 2。如果我尝试将数据包 2 写入连接而不读取为数据包 1 发送的回复,我会得到一个异常(exception)。当我对看到的内容不感兴趣时​​,为什么要阅读数据包 1 的响应?

最佳答案

如果您使用 HTTP,则需要遵守 HTTP Specification 中规定的 HTTP 协议(protocol)。 。也就是说,客户端向服务器发送请求消息,服务器发送响应。客户端在连接上发送另一个请求之前需要完全读取该响应。

So there's no way I can write a request without reading the response for a previous request?

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

如果您不想遵守 HTTP 的要求,则应该使用不同的协议(protocol)……或者发明自己的特定于应用程序的协议(protocol)。

<小时/>

目前尚不清楚您为何立即收到异常。 (您没有提及异常是什么,或者您正在使用哪个客户端 HTTP 库。)但我期望异常来自 HTTP 实现,告诉您您正在使用 API错误。

关于java - 在Java中使用Http连接时,为什么我们总是应该在写入之前进行读取调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12838310/

相关文章:

java - 使index.jsp重定向到其不带扩展名的url

java - 进程中创建的字符串对象总数?

java - org.openqa.selenium.SessionNotCreatedException

java - 基于 Http 调用的 RESTFul Web 服务类型框架

java - 通过socket连接tomcat

Java套接字读取输入流而不阻塞

java - 在使用流 API 的 Java 8 中,如何从需要多次计算的 Map 返回实例

http - 即使从 WinHTTP 格式错误,也能检索 HTTP 响应

未授予 Android 权限

java - 使用 ByteArrayInputStream 构造 ObjectInputStream 后没有可用字节