我创建了一些curl命令将POST发送到我的服务器,我在那里监听该端口的输入以触发其他操作。该命令如下(刚刚屏蔽了URL):
curl -v -H "Content-Type: application/json" -X POST -d "{\"Location\":\"Some Name\",\"Value\":\"40%\"}" http://example.com:8885/
我从curl得到以下输出:
关于connect()到example.com端口8885(#0)
尝试使用5.147.XXX.XXX ......
连接到example.com(5.147.XXX.XXX)端口8885(#0)
POST / HTTP / 1.1
User-Agent:curl / 7.29.0
主持人:example.com:8885
接受: /
Content-Type:application / json
内容长度:40
上传已完全发送:40个字节中的40个
然而,在卷曲后没有关闭连接。难道我做错了什么?同样在服务器上我只有在按下ctrl + c时才会收到POST。
答案 0 :(得分:5)
它坐在那里等待正确的HTTP响应,在收到它之后它会干净地退出。
最小的HTTP / 1.1响应可能类似于:
HTTP/1.1 200 OK
Content-Length: 0
...在最后一个标题之后需要一个额外的CRLF来表示标题的结尾。
答案 1 :(得分:3)
我对此有点生疏,但根据section 6.1 of RFC7230,您可能还需要添加Connection: close
标头。引用段落的一部分:
"关闭"连接选项定义为发送者发信号 该连接将在完成后关闭 响应。例如,
请求或响应头字段中的Connection: close
表示 发送者将在当前
之后关闭连接 请求/响应已完成(第6.6节)。
如果它能解决您的问题,请告诉我们: - )