开发者社区> 问答> 正文

相关demo及 Android 摘要认证的使用!

新手,第一次接触,很懵,待解救。对于认证这一块现在很混乱。现在后台认证是用的摘要式,我这边怎么使用摘要式来验证呢?

展开
收起
爵霸 2016-03-03 13:21:19 2085 0
1 条回答
写回答
取消 提交回答
  • 我搜了一下资料,我没有自己实践过,还需要你亲自验证一下才好

    基本思路:

    --- 使用HttpClient(DefaultHttpClient)类连接服务器并获取数据

    DefualtHttpClient 类:创建client对象

    excuete(HttpGet)方法:执行连接和获取,参数是一个HttpGet对象

    HttpGet类:基于url创建HttpGet对象

    HttpResponse类: execute的返回值

    getEntiry().getContent() 方法:获取数据流

    --- 该client访问需要认证的资源需要一个认证方法,就需要设置一个认证提供者

    client的 setCredentialsProvider(bcp) 方法:设置认证提供者

    BasicCredentialsProvider 类:创建认证提供者实例

    setCredentials 方法:设置AuthScope和UsernamePasswordCredentials类

    AuthScope类:认证范围,基于主机,端口和领域构建

    UsernamePasswordCredentials:基于用户名和口令的证书,基于用户名和口令构建

    Java code:

    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 
    
    // 1. 获取并设置url地址,一个字符串变量,一个URL对象  String urlStr ="http://<host>:<port>/data.json";  URL url= new URL(urlStr);  
     // 2. 创建一个密码证书,(UsernamePasswordCredentials类)   String username="foo";    String password="bar";     UsernamePasswordCredentials upc = new UsernamePasswordCredentials(username, password);  
     // 3. 设置认证范围 (AuthScore类) String strRealm = "<mydomain>"; String strHost = url.getHost(); int iPort = url.getPort(); AuthScope as = new AuthScope(strHost, iPort, strRealm); 
      // 4. 创建认证提供者(BasicCredentials类) ,基于as和upc BasicCredentialsProvider bcp=new BasicCredentialsProvider(); bcp.setCredentials(as, upc); 
     // 5. 创建Http客户端(DefaultHttpClient类) DefaultHttpClient client=new DefaultHttpClient();   
    // 6. 为此客户端设置认证提供者 client.setCredentialsProvider(bcp); 
     // 7. 创建一个get 方法(HttpGet类),基于所访问的url地址 HttpGet hg= new HttpGet(urlStr); 
     // 8. 执行get方法并返回 response HttpResponse  hr = client.execute(hg); 
     // 9. 从response中取回数据,使用InputStreamReader读取Response的Entity:         String line=null;         StringBuilder builder = new StringBuilder();          BufferedReader reader = new BufferedReader(new InputStreamReader(hr.getEntity().getContent() ));         while((line = reader.readLine()) != null)  builder.append(line);          strContent=builder.toString(); 
    2019-07-17 18:51:16
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载