我使用HttpURLConnection
类来管理Android应用中的HTTP连接。问题是,在某些服务器上,我有一个代码 401 ,使用的是一个工作在Internet导航器上的URL。我初始化与基本身份验证的连接,但我认为这些服务器需要其他模式。我知道它适用于 libCURL 和以下指令:
curl_easy_setopt(pCurlHandle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
但是有没有办法在Android上做类似的事情?目前,我这样做:
...
connection.setRequestProperty("Authorization", "Basic " + Base64.encode("username:password"));
...
我也试过了Authenticator
:
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("username", "password".toCharArray());
}
});
但我的应用程序中仍然有401。有什么想法吗?
答案 0 :(得分:1)
嗯, this post 真的对我很有帮助(但我根本不使用Authenticator
课程)现在我的代码完成了这样的工作(如果认证的话)需要):
使用基本身份验证初始化我的HttpURLConnection
对象(请参阅我的问题代码中的第一个Java示例)
测试我是否收到代码401,如果是,请检查服务器是否排除 Digest 身份验证分析响应标头。
使用手动构建的 Digest 请求属性重试(请参阅我提到的帖子)
它有效!
我希望这个答案可以帮助别人!