gpt4 book ai didi

java - 通过单个套接字进行多个 HTTP POST

转载 作者:行者123 更新时间:2023-12-01 23:16:07 24 4
gpt4 key购买 nike

我正在尝试通过单个套接字连接发送多个 HTTP POST,但是一旦我读取输入流,EPIPE 就会损坏。

mBufferedWriter.write("POST " + "/base/mypath" + " HTTP/1.1" + "\r\n");
mBufferedWriter.write("Host: " + mIp + "\r\n");
mBufferedWriter.write("Content-Length: " + json.toString().length()"\r\n");
mBufferedWriter.write("Content-Type: application/json\r\n");
mBufferedWriter.write("Connection: Keep-Alive\r\n\r\n");
mBufferedWriter.write(json.toString() + "\r\n");
mBufferedWriter.flush();

我的第一个帖子将到达服务器。我正在努力实现管道化。还为套接字设置保持 Activity 状态

最佳答案

HTTP Pipelining涉及的不仅仅是重新使用现有连接(HTTP Keep-Alive)。管道化涉及同时通过单个连接发送多个 HTTP 请求,其中客户端发送 HTTP 请求,但在同一连接上发送下一个 HTTP 请求之前不等待其响应。客户端和服务器都必须实现对管道的支持才能有效地使用它。即使如此,仍然存在与管道化 POST 请求相关的问题,因此它们不应该被管道化。 HTTP Pipelining在 RFC 2616 部分 8.1.1 中进行了讨论和 8.1.2.2 .

如果你实际上没有实现 Pipelined,只是实现 Keep-Alive,那么你必须注意服务器的 Connection 响应 header ,因为它告诉你是否允许发送新的 HTTP 请求是否通过相同的连接。对于 HTTP 1.1 响应,如果服务器发送 Connection: close header ,则套接字将在发送响应后被服务器关闭,因此您必须在之前创建一个新连接发送下一个 HTTP 请求。

关于java - 通过单个套接字进行多个 HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21168424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com