3

我正在向 google reader api 发送一个 http 请求并得到一个不寻常的响应代码。在文档之后,我请求了一个身份验证代码并将其包含在每个请求的标头中。执行登录并获取身份验证代码后,我尝试访问此 url,它是文档的一部分:

http://www.google.com/reader/api/0/stream/items/contents

当我发送请求时,我得到一个 411 状态码,这应该意味着“需要长度”。正如我所发现的,长度应该是消息正文的长度(以八位字节为单位)。此请求中没有消息正文。只有一个标头,POST 参数 i="item id" 和 URL 本身。我尝试将“Content-Length”标头设置为“0”,也设置为“-1”无济于事。

真正有趣的是,在谷歌改变他们的授权程序之前,同样的代码运行良好。很明显他们已经改变了其他东西......

所以我的问题是什么会导致 411 响应代码,我该如何防止它?

4

1 回答 1

2

此错误仅发生在 POST 和 PUT 请求类型中,因为这两种(某种)期望具有包含请求参数(纯文本和附件)的请求正文。

然而,正如文档所暗示的,这在很大程度上是一个过时的值,实际上 Web 服务应该在不依赖 Content-Length 的情况下处理请求。

所以这不是请求发送者的问题,而是(我会说)服务端的一个错误。

尽管如此,将 Content-Length (注意正确的大小写)请求标头设置为 0 应该是解决方法。

于 2012-02-24T01:21:26.310 回答