HttpURLConnection 在 Android 2.x 中工作正常,但在 4.1 中不行:未发现身份验证挑战

2024-01-12

我有一些典型的代码,它们使用 HttpURLConnection 来获取带有 URL 的文件。 它们在 android 1.x 和 2.x 中运行良好。但在Android 4.1中失败了!

我在网上搜索了一下,但几乎没有找到类似的信息。 有人愿意帮忙调查这个问题吗?

private String mURLStr; 
private HttpURLConnection mHttpConnection;

...

url = new URL(mURLStr);

...

mHttpConnection = (HttpURLConnection) url.openConnection();
mHttpConnection.setDoOutput(true);
mHttpConnection.setRequestMethod("GET");

...

InputStream is = mHttpConnection.getInputStream();

getInputStream 方法抛出异常:

08-01 15:56:48.856: W/System.err(13613): java.io.IOException: No authentication challenges found
08-01 15:56:48.856: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.getAuthorizationCredentials(HttpURLConnectionImpl.java:427)
08-01 15:56:48.866: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:407)
08-01 15:56:48.866: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:356)
08-01 15:56:48.866: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:292)
08-01 15:56:48.866: W/System.err(13613):      at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
...

我目前面临着同样的问题。在 4.1 Jelly Bean 上,在 HttpURLConnection 上调用 getResponseCode() 时,我收到 IOException“未发现身份验证挑战”。

我上网搜索了一下Android源代码有什么变化,发现如下: 4.0.4(工作):https://bitbucket.org/seandroid/libcore/src/7ecbe081ec95/luni/src/main/java/libcore/net/http/HttpURLConnectionImpl.java https://bitbucket.org/seandroid/libcore/src/7ecbe081ec95/luni/src/main/java/libcore/net/http/HttpURLConnectionImpl.java4.1.1(不工作):https://bitbucket.org/seandroid/libcore/src/6b27266a2856/luni/src/main/java/libcore/net/http/HttpURLConnectionImpl.java https://bitbucket.org/seandroid/libcore/src/6b27266a2856/luni/src/main/java/libcore/net/http/HttpURLConnectionImpl.java

正如我们在 4.1 JB 中看到的,方法 getAuthorizationCredentials() 抛出 IOException。如果响应代码是 401 或 407,它会使用 HeaderParser.parseChallenges(..) 解析在响应中找到的质询标头。如果返回的 List 为空,则会引发异常。

https://bitbucket.org/seandroid/libcore/src/6b27266a2856/luni/src/main/java/libcore/net/http/HeaderParser.java https://bitbucket.org/seandroid/libcore/src/6b27266a2856/luni/src/main/java/libcore/net/http/HeaderParser.java

我们目前正在调查到底是什么原因导致该列表为空,但怀疑我们的服务器可能在挑战标头中使用realm = ...而不是realm =“...”。缺少引号可能是导致此问题的原因。我们必须进一步调查是否确实如此以及我们是否可以使其发挥作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpURLConnection 在 Android 2.x 中工作正常,但在 4.1 中不行:未发现身份验证挑战 的相关文章

  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时

随机推荐

  • 在一个事务中执行两个不同的查询

    我正在尝试在一个中执行两个插入查询Statement 将它们放在一笔交易中 我正在看addBatch方法 但如果我理解正确的话 它可以与单个PreparedStatement使用不同的参数多次执行相同的插入 或者用于Statement对象向
  • Chrome扩展:访问background.html中的跨域iframe

    由于页面的复杂性 XHR 并不是真正的选择 我正在尝试编写一个扩展来抓取需要作为网页加载的网站 我想出的最佳解决方案是通过放置在background html 中的iframe 进行抓取 当满足目标页面上的某些条件时 扩展程序将向用户提供通
  • 在 32 位系统上使用 int64_t 而不是 int32_t 对性能有何影响?

    我们的 C 库当前使用 time t 来存储时间值 我开始在某些地方需要亚秒级精度 因此无论如何 那里都需要更大的数据类型 此外 在某些地方解决 2038 年问题可能会很有用 因此 我正在考虑完全切换到具有底层 int64 t 值的单个 T
  • c 赋值中的类型不兼容,指针有问题吗?

    您好 我正在使用 C 我有一个关于分配指针的问题 struct foo int bar char car SOME NUMBER this is meant to be an array of char so that it can hol
  • 带有多个下划线的文本

    我的应用程序是 它是一些在线文档 用户可以在其中对文本进行注释和下划线以供参考 现在这可以由多个用户完成 因此每个下划线需要有不同的颜色 所以基本的要求是我需要有一个下面有多个下划线的文本 下划线颜色也应该不同 我知道的困难方法是 我可以添
  • 自动连接信号与 GtkBuilder 但在 GTKmm 上

    In C 我可以使用以下代码自动连接信号 gtk builder connect signals builder NULL 如何执行此操作C with GTKmm 你不能使用Glade使用时连接您的信号gtkmm 您需要手动执行此操作 Gl
  • Cheerio:.text() 将所有元素的文本附加在一起

    下面的代码输出所有 p 标签staff member title附加的 let arr li staff directory department map item index gt arr push title p staff membe
  • 在没有显式 TestSuite 的情况下,不要在 Maven 和每个 IDE(Eclipse、IntelliJ...)中默认运行一类缓慢的 JUnit 测试

    我有一组非常慢的测试 需要一周的时间才能运行 他们实际上不间断地运行一些代码大约一周 当然 没有开发人员 甚至默认构建作业 愿意运行这些测试 只有特定的 单独的构建作业才有时间运行它们 所以默认情况下需要禁用这些测试 JUnit s 类别
  • 相机允许不起作用 android webview

    我正在尝试创建一个webview应用程序 我尝试添加对清单的访问权限 但它没有改变任何内容 在 chrome 浏览器上相机可以工作 我不明白我应该做什么 1 这是清单
  • Kubernetes 入口路由到 Nextjs 应用程序的问题

    所以我有一个有趣的用例 我在 Kubernetes 集群上运行多个微服务 我的应用程序使用 NextJS 对 next 路由进行内部调用 我的问题来自这样一个事实 我需要一种方法来区分服务及其对 next 文件的请求 因此 我实现了 Nex
  • 将抛出的异常更改为失败的简洁方法?

    有没有比以下更简洁的方法来将抛出的异常提升为失败 try die always CATCH default fail 这是莫里茨代码的更简洁版本 try something orelse fail
  • python程序崩溃后如何重新启动

    我有一个 python 脚本 它启动一个程序并自动执行它 不断处理新数据并保存到预设目录 永久运行 Python 脚本 在发生错误时记录错误并在崩溃时重新启动的推荐方法是什么 到目前为止我遇到过os execv并以此开始 import sy
  • 为什么从 void 函数模板返回时不会出现编译器错误?

    考虑 void f return 5 以上会引发错误 但为什么不是这个呢 template
  • 通过 .Rmd 在标头中插入标签

    我正在使用 Rstudio 创建 Rmd 报告 并且我希望能够将元标记插入到当 Rmd 被编织成 html 时 从文档上针织选项 http yihui name knitr options package options我想我可以设置标题选
  • 如何根据 R 中另一列中的值设置列值

    我正在尝试根据另一列中的值添加新列 基本上 如果另一列缺失或为 0 则将新值设置为 0 或 1 下面这段代码有什么问题吗 times nrow eachfile for i in 1 times eachfile SalesCycleN0
  • 带有先前获取参数的 HTML 表单 GET 方法

    我在页面上有一个带有获取参数的表单 index php PageID 12 然后 我在该页面上有多个表单 当用户选择详细信息时 它们会构建页面详细信息 我的问题是 当发布表单时 Get 会覆盖其他 get 参数 我可以使用 post 但只能
  • awk科学计数法输入

    我在让 awk 从文件中读取科学记数法时遇到了一些麻烦 这里是一些示例输入 Plane Turn Real Imaginary HOR 1 0 0000e 00 2 1885e 07 HOR 1 4 8481e 08 8 1221e 08
  • SML/NJ:如何使用哈希表?

    我真的很想在 SML 中创建一个哈希表 似乎 SML NJ 中已经有一个结构 问题是 我该如何使用它 我还没有完全理解如何在SML中使用结构 并且我读过的书中的一些非常基本的示例给了我错误 我什至不知道如何纠正 所以使用HashTable结
  • WebStorm - 未解析的变量或类型 - Sails / module.export [重复]

    这个问题在这里已经有答案了 尝试修复 JavaScript 中的 WebStorm v11 0 4 警告 很多unresolved variable or typeSailsJS 应用程序中自定义类型的错误 例如以下错误 我已经在 WebS
  • HttpURLConnection 在 Android 2.x 中工作正常,但在 4.1 中不行:未发现身份验证挑战

    我有一些典型的代码 它们使用 HttpURLConnection 来获取带有 URL 的文件 它们在 android 1 x 和 2 x 中运行良好 但在Android 4 1中失败了 我在网上搜索了一下 但几乎没有找到类似的信息 有人愿意