【发布时间】:2014-06-26 03:18:31
【问题描述】:
我尝试使用HttpsURLConnection 访问我的服务器,得到响应代码 401 - 需要进行身份验证。尝试了以下方法:
Authenticator.setDefault (new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication ("myuser", "!mypassword".toCharArray());
}
});
得到响应代码 400 - 错误请求。
基于一些 stackoverflow 研究,我也尝试使用:
String authorizationString = "Basic " + Base64.encodeToString(("username" + ":" + "password").getBytes(), Base64.DEFAULT);
conn.setRequestProperty("Authorization", authorizationString);
同样的问题,代码 400。我也信任在这篇文章中使用 @Chrispix 方法的所有主机: Trust Anchor not found for Android SSL Connection 不确定这是否会以某种方式干扰,但这是针对原型的,并且站点证书无效,因此我需要绕过检查。
使用这些属性建立连接,不确定是否有任何错误或缺失:
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.addRequestProperty("Content-Type", "application/json");
conn.setRequestMethod("POST");
conn.setDoInput(true);
谢谢!
【问题讨论】:
-
你能把 Base64.DEFAULT 改成 Base64.NO_WRAP 吗?你还需要
setRequestProperty("Authorization", "Basic " + encoding); -
试过no_wrap没有效果:(
-
尝试使用邮递员客户端,您可以使用上面定义的属性检查上面的 url,如内容类型或请求类型(get/post)
-
试试 Base64.DEFAULT 到 Base64.URL_SAFE|Base64.NO_WRAP
标签: android httpurlconnection httpsurlconnection