【发布时间】:2013-03-15 05:09:34
【问题描述】:
我正在开发一个实现 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 标头有关,但我不确定。 尝试添加此标头后,我的程序等待一分钟,然后引发异常,通知它无法处理服务器响应。
如果需要,我还可以提供任何代码或堆栈跟踪。
【问题讨论】:
-
所以
setHeader("Content-Length", "" + file.length())resp。setContentLength((int)file.length());左右。 -
我不想上传文件。只是尝试传递带有一堆参数的 URL 以更新数据库
-
内容长度 0 正如@Sachin 所说的那样。
-
谷歌应用引擎码头在本地运行时遇到了类似的问题。对我来说,单独设置
Content-Length不起作用(我遇到了同样的 411 错误),所以我必须在请求上设置一个虚拟内容才能使其工作。
标签: java http rest put content-length