2010-07-08 78 views
3

我发送一个http请求到google reader api并获得一个不寻常的响应代码。在文档之后,我请求了一个认证代码并将其包含在每个请求的头部。进行登录,并得到一个授权码后,我试图访问这个URL,这是文件的一部分:HTTP响应411需要的长度,Http客户端4.0.1 Android

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

当我发送请求,我得到一个411个状态码,这是为了意思是“需要的长度”。正如我发现的,长度应该是消息体的长度,以八位字节为单位。此请求中没有消息正文。只有一个标题,POST参数i =“item id”和URL本身。我试着将“Content-Length”标题设置为“0”,并将“-1”设置为无效。

真正有趣的是,在谷歌改变授权程序之前,这个相同的代码工作正常。很明显他们已经改变了别的东西...

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

回答

2

这个错误只发生在POST和PUT请求类型中,因为这两个(有点)期望有一个包含请求参数(纯文本以及附件)的请求主体。

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

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

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

+0

我得到'GET'错误:411' GET'请求。我正在请求从Python脚本服务器到我的django服务器。所以,这不仅仅是'POST'和'PUT' – 2016-07-10 15:08:41