【发布时间】:2013-06-17 06:42:11
【问题描述】:
在对 REST API 进行 GET 调用时,我收到了 FileNotFoundException。我在这里得到的 HTTP 状态码是403。
对于POST 调用,我得到IOException : No authentication challenges found,而我通过Authorization 标头。在这里,我得到 HTTP 状态代码 401。
查看我的 already asked question 以查看 POST 调用的代码和 logcat 屏幕截图。
下面我附上 GET 调用的 logcat 屏幕截图:
注意:
1) 我尝试过使用Authenticator。
2) 尝试了不同的 base64 标志,例如 NO_WRAP、URL_SAFE、DEFAULT。
3) 我对www.google.com 的简单调用有效。
4) 当我登录urlConnection.getErrorStream() 时,会打印图像中的最后一行。我不明白那是什么,它是什么意思。我在标题中指定了Content-type 到application/json。
更新:我尝试使用Burp,发现标题“Accept”、“Content-type”不同。我使用与iOS应用程序相同的方法。但它仍然不起作用。
注意事项:
1) 它总是在in = urlConnection.getInputStream(); 行抛出异常。
2)我记录了一些东西,根据它,内容长度是114,这不是空的。内容类型是application/json; charser=utf-8。
【问题讨论】:
-
也许服务器提供了一个 gzip(压缩)答案,而 lib 无法读取该流。
-
@TeTeT 好的。我认为服务器不会发送 gzip,因为我在 iOS 应用程序中使用相同的 API 来获得 JSON 响应。即使服务器发送它,为什么我得到 FileNotFoundException 和“未找到身份验证挑战”?任何的想法。顺便说一句,谢谢。
-
我试过你的代码,我得到的只是
404 : Invalid requested action ERROR_INVALID_ACTION_REQUEST的 URLhttp://api.ridesharebuddy.com/rsmobile/user/。是好网址吗? -
@Raphaël 该 URL 不足以发出请求。您必须将方法设置为 GET 并传递我没有在代码中显示的 2 个标头,因为它们与问题没有任何关系。顺便说一句,我解决了这个问题并将作为答案,以便其他有类似问题的人可以尝试。
-
我认为拉斐尔是对的
标签: java android exception authentication httpurlconnection