我正在开发一个实现 HTTP 客户端的 Java 程序。 我测试它向服务器发送请求。 GET、POST 和 DELETE 请求工作正常。 例如在一个 POST 请求之后我得到一个输出
Data extracted:
{"status":{"message":"ok"}}
并且数据库反射(reflect)了所做的更改。
在 PUT 请求之后,我得到以下指示错误的网页 html 标记。
Data extracted:
<html>
<head><title>411 Length Required</title></head>
<body bgcolor="white">
<center><h1>411 Length Required</h1></center>
<hr><center>nginx/1.2.6</center>
</body>
</html>
因此数据库中没有任何变化。
我发现这可能与 Content-Length header 有关,但我不确定。 尝试添加此 header 后,我的程序等待一分钟,然后抛出异常,通知它无法处理服务器响应。
如果需要,我还可以提供任何代码或堆栈跟踪。
最佳答案
是的,与 Content-Length
有关的问题。 HTTP 错误 411 表示
The server refuses to accept the request without a defined Content- Length. The client MAY repeat the request if it adds a valid Content-Length header field containing the length of the message-body in the request message.
因此,当您在 POST/PUT 方法中发送一个空的 RequestBody
时,您还需要发送 Content-Length:0
。因此,请在您的请求中添加此 header 。我不认为这个 header 会导致你添加到请求对象中的问题。
关于java - 来自 HTTP 客户端的 PUT 请求后获取 "411 Length Required",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619562/