HttpURLConnection 认证方式
Posted
技术标签:
【中文标题】HttpURLConnection 认证方式【英文标题】:HttpURLConnection authentication mode 【发布时间】:2016-12-07 09:15:52 【问题描述】:我正在使用 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。有什么想法吗?
【问题讨论】:
【参考方案1】:嗯,this post 真的帮了我很多忙(但我根本不使用Authenticator
类),现在我的代码完成了这样的工作(如果需要身份验证):
使用基本身份验证初始化我的HttpURLConnection
对象(请参阅我的问题代码中的第一个Java示例)
测试我是否收到代码 401,如果是,请检查服务器是否排除在 Digest 身份验证分析响应标头中。
使用手动构建的 Digest 请求属性重试(参见我提到的帖子)
而且有效!
我希望这个答案会对某人有所帮助!
【讨论】:
以上是关于HttpURLConnection 认证方式的主要内容,如果未能解决你的问题,请参考以下文章
HttpURLConnection responseCode 405 方法不允许错误
[接口测试_B] 11 requests的身份认证方式(文末附有系列文章)
关于JAVA发送Https请求(HttpsURLConnection和HttpURLConnection)