gpt4 book ai didi

android - HttpURLConnection 在 Android 2.x 中运行良好但在 4.1 中运行不正常 : No authentication challenges found

转载 作者:太空宇宙 更新时间:2023-11-03 11:12:44 25 4
gpt4 key购买 nike

我有一些典型的代码,它们使用 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.java4.1.1(不工作):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(..) 解析它在响应中找到的挑战 header 。如果返回的列表为空,则抛出异常。

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

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

关于android - HttpURLConnection 在 Android 2.x 中运行良好但在 4.1 中运行不正常 : No authentication challenges found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22247231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com