android - 截击错误未找到身份验证挑战

标签 android authentication android-volley

我正在尝试使用一些遗留代码,但在使用 volley 时遇到了一个问题。

我正在尝试访问我们的主站点拥有的 API,它对一个帐户工作正常,但对另一个帐户无效。我正在尝试找出请求 URL/ header 中可能存在的差异以及响应中返回的内容,但我似乎无法在 volley 代码中找到将其打印到日志的方法。

我得到的错误是

com.android.volley.NoConnectionError: java.io.IOException: No authentication challenges found

我听说这可能是由于 401 响应引起的,但我真的不知道这意味着什么,或者至少不知道如何证明/测试它。我真的很困惑它适用于一个帐户而不适用于另一个帐户。

URL 略有不同,一个是我们的英国网站,另一个是我们的 AM,但除此之外没有区别。

谢谢

最佳答案

事实上,我已经通过在服务器响应中包含 WWW-Authenticate header 解决了这个问题。

但是,如果您添加 header WWW-Authenticate: Basic realm="" 并且您的 API 也被 Web 客户端使用,则某些 Web 浏览器会触发一个弹出窗口,要求提供基本凭据。

对我来说,正确的解决方案是使用自定义方案。如本 blog post 中所述,我在 header 响应中使用 xBasic 而不是 Basic

WWW-Authenticate: xBasic realm=""

有了这个 header ,不仅 Volley 可以正确解析响应,而且我还可以避免 Web 浏览器显示身份验证弹出窗口。

关于android - 截击错误未找到身份验证挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616610/

相关文章:

android - 如何在 AVD Eclipse 上运行和编译 Android 应用程序

android - 显示所选 API 的文档

android - 单击工具栏上的汉堡包图标不会打开抽屉导航

java - spring security - 身份验证中的sessionId为空

android - 使用磁场计算旋转矩阵

python - 使用IMAP读取gmail失败

php - 电子邮件地址验证(点和大写)

php - 在 php 中循环遍历 JSONArray 的值

java - Android Studio 服务器连接失败

android - 如何在Kotlin中使用Volley正确解析此JSON响应