编程语言
首页 > 编程语言> > java-来自HTTP客户端的PUT请求后获取“ 411 Length Required”

java-来自HTTP客户端的PUT请求后获取“ 411 Length Required”

作者:互联网

我正在研究实现HTTP客户端的Java程序.
我测试它向服务器发送请求. GET,POST和DELETE请求工作正常.
例如在POST请求后,我得到一个输出

Data extracted:
{"status":{"message":"ok"}}

数据库反映了所做的更改.

在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标头有关,但我不确定.
尝试添加此标头后,我的程序等待一分钟,然后引发异常,通知它无法处理服务器响应.

如果需要,我还可以提供任何代码或堆栈跟踪.

解决方法:

是的,与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.因此,在您的请求中添加此标头.我认为此标头不会导致您将其添加到Request Object中的问题.

标签:content-length,java,rest,http,put
来源: https://codeday.me/bug/20191010/1887036.html