【问题标题】:Android 4.3 HTTPUrlConnection + Basic Auth - No authentication challenges foundAndroid 4.3 HTTPUrlConnection + 基本身份验证 - 未发现身份验证挑战
【发布时间】:2013-09-05 09:12:06
【问题描述】:

我在 HttpURLConnection 上使用基本身份验证来获取一些数据。直到 4.2 这工作得很好,但在 Nexus 4 上使用 4.3 我在查询响应代码时得到 java.io.IOException: No authentication challenge found。奇怪的是,当我在 4.3 模拟器上运行相同的代码时,并没有出现问题。

我尝试了这里提到的解决方案,但没有运气:HTTP Basic Authentication issue on Android Jelly Bean 4.1 using HttpURLConnection

代码:

URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(2000000); 

String userpass = user + ":" + pass;
String basicAuth;

//fix from SO
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
    basicAuth = "Basic " + new String(Base64.encodeToString(userpass.getBytes(), Base64.NO_WRAP));
}
else {
 //Base64: http://iharder.net/base64
    basicAuth = "Basic " + new String(com.foo.bar.Base64.encodeBytes(userpass.getBytes()));
}
urlConnection.setRequestProperty ("Authorization", basicAuth);

//throws Exception
urlConnection.getResponseCode();

追踪:

09-01 21:40:13.501: W/System.err(23055): java.io.IOException: No authentication challenges found
09-01 21:40:13.501: W/System.err(23055):    at libcore.net.http.HttpURLConnectionImpl.getAuthorizationCredentials(HttpURLConnectionImpl.java:438)
09-01 21:40:13.501: W/System.err(23055):    at libcore.net.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:418)
09-01 21:40:13.501: W/System.err(23055):    at libcore.net.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:367)
09-01 21:40:13.501: W/System.err(23055):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:301)
09-01 21:40:13.501: W/System.err(23055):    at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)
09-01 21:40:13.501: W/System.err(23055):    at com.foo.bar.InputStreamHelper.getUrlConnectionFromUrl(InputStreamHelper.java:65)

【问题讨论】:

    标签: java android httpurlconnection basic-authentication android-4.3-jelly-bean


    【解决方案1】:

    通过将构建目标提升到 API 级别 18 解决了问题

    【讨论】:

    • 我遇到了同样的问题,但我的目标构建级别是 19。这对 19 有用吗?
    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多