我正在尝试通过网络浏览器对此服务器http://52.16.207.138/api/v0.1/device/999 user = 5588031263bf4457a7641c07和pass = 5588031263bf4457a7641c08进行摘要式身份验证,我获得了200个http代码和一些状态的json。
我的安卓代码:
private JSONObject POST() throws JSONException {
JSONObject response = null;
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("5588031263bf4457a7641c07", "5588031263bf4457a7641c08".toCharArray());
}
});
try {
URL url1 = new URL("http://52.16.207.138/api/v0.1/device/999");
HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
conn.setRequestMethod(GET);
conn.connect();
int status = conn.getResponseCode();
InputStream is;
if(status >= HttpURLConnection.HTTP_BAD_REQUEST)
is = conn.getErrorStream();
else
is = conn.getInputStream();
Log.d("RespuestaHTTP",String.valueOf(status));
byte[] buffer = new byte[8196];
int readCount;
StringBuilder builder = new StringBuilder();
while ((readCount = is.read(buffer)) > -1) {
builder.append(new String(buffer, 0, readCount));
}
response = new JSONObject(builder.toString());
Log.d("Respuesta",response.toString());
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
但我总是得到401回复,我不知道我做得不好。
有人可以帮助我???
06-22 18:57:17.797 1708-1750/com.example.urbanclouds.pruebasdigest D/RespuestaHTTP﹕ 401
答案 0 :(得分:1)
将我的答案复制到another HTTP digest question:
HttpUrlConnection
不支持摘要式身份验证。如果您的客户端必须使用Digest进行身份验证,您可以选择以下几种方法:
HttpURLConnection
之上使用。okhttp-digest
作为身份验证器,您就可以获得透明的Http摘要支持。如果您已经使用OkHttp或者切换到它可以,这可能是一个很有吸引力的选择。HttpClient
。此选项主要用于完成,因为Google建议不要使用HttpClient
并弃用它。