android - HTTP 响应 411 长度要求,Http 客户端 4.0.1 Android

标签 android http httpclient google-reader

我正在向 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/

相关文章:

android - 当受邀玩家离开游戏时调用 onDisconnectedFromRoom()

java - Android/java - 在 onClick 中使用计时器循环

android - 在 Android 中动态刷新 Gridview

php - Codeigniter http -> https 发现 302

java - 如何获取纯 JSON 字符串而不是 HTML

java - 执行在 getOutputStream() 函数处自动停止 使用 servlet 推送通知

java - HttpPost 转义参数

c# - HttpClient 取消不通知服务器取消

java - 如何在不在本地保存图像的情况下将捕获的图像(Surface View)传递给另一个 fragment ?

http - Safari 7 网络请求时间轴不显示重定向?