gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:51:03 26 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 。如果返回的 List 为空,则抛出异常。

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

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

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

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