我正在向 google reader api 发送一个 http 请求并得到一个异常的响应代码。按照文档,我请求了一个授权码并将其包含在每个请求的 header 中。执行登录并获得授权码后,我尝试访问此 url,它是文档的一部分:
http://www.google.com/reader/api/0/stream/items/contents
当我发送请求时,我得到一个 411 状态代码,这应该意味着“需要长度”。正如我发现的那样,长度应该是消息正文的八位字节长度。此请求中没有消息正文。只有一个 header 、POST 参数 i="item id"和 URL 本身。我尝试将“Content-Length” header 设置为“0”和“-1”,但均无济于事。
真正有趣的是,在谷歌改变他们的授权程序之前,同样的代码运行良好。很明显他们已经改变了其他东西......
所以我的问题是什么会导致 411 响应代码,我该如何防止它?
最佳答案
此错误仅发生在 POST 和 PUT 请求类型中,因为这两种(某种程度上)期望具有包含请求参数(纯文本和附件)的请求正文。
然而,正如文档所建议的那样,这在很大程度上是一个过时的值,实际上 Web 服务应该在不依赖 Content-Length 的情况下处理请求。
所以这不是请求发送方的问题,而是(我会说)服务端的错误。
不过,将 Content-Length(注意正确的大写)请求 header 设置为 0 应该是解决方法。
关于android - HTTP 响应 411 长度要求,Http 客户端 4.0.1 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3208861/