Android学习记录(十二) http之base/digest鉴权。

说下背景,我们实现的http的文件下载是基于webdav协议的。

这个肯定是需要鉴权的~

android 5.1不再推荐使用apache的client,今天努力想尝试一下用httpurlconnection替换一下。

大家可以到stackoverflow搜索一下,目前httpurlconnection还不支持digest鉴权,只支持base的鉴权。


下面是httpurlconnection base的鉴权代码:

HttpURLConnection conn=(HttpURLConnection)newurl.openConnection();
setJellyBeanAuth(conn);
private void setJellyBeanAuth(HttpURLConnection httpConn) {
    byte[] auth = (LoginManager
            .getCurrentUsername() + ":" + LoginManager
            .getCurrentPassword()).getBytes();
    String basic = Base64.encodeToString(auth, Base64.NO_WRAP);
    httpConn.setRequestProperty("Authorization", "Basic " + basic);
}
 
然后偶们需要的是digest鉴权,所以还的老老实实使用httpclient
digest的鉴权代码如下:
HttpContext context = new BasicHttpContext();

context.setAttribute(ClientContext.CREDS_PROVIDER,
        new BasicCredentialsProvider());

CredentialsProvider provider = (CredentialsProvider) context
        .getAttribute(ClientContext.CREDS_PROVIDER);

provider.setCredentials(
        new AuthScope(targetHost.getHostName(), targetHost
                .getPort()),
        new UsernamePasswordCredentials(LoginManager
                .getCurrentUsername(), LoginManager
                .getCurrentPassword()));

关于httpurlconnection不支持digest的可以看这篇文章:
http://stackoverflow.com/questions/32689185/digest-authentication-in-android-using-httpurlconnection
 
如果有大牛看到这篇blog,有好的开源http框架,欢迎推荐啊~
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值