前面通过.net Webapi搭建了数据访问及处理平台,以下介绍如何通过Android来访问Webapi的数据。

Android的常用的网络访问方式是使用HttpClient和HttpURLConnection、OKHttp等,其中OKHttp非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。默认情况下,OKHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题。而我们现在搭建的webapi主要使用REST的架构风格,Square提供的开源产品Retrofit,为Android平台的应用提供一个类型安全的REST客户端。

Retroft基于注解,可以把结构化的数据转化为Java实体类。

我们采用gson解析JSON数据,默认情况下解析必须名称大小写一致,高级应用可以参考Gson 解析教程

首先我们定义一个实体类

  1. /**
  2. * BearerToken实体类
  3. */
  4. public class BearerToken {
  5. private String access_token;
  6. private String token_type;
  7. private Integer expires_in;
  8. private String userName;
  9. private Date issued;
  10. private Date expires;
  11.  
  12. public String getAccess_token() {
  13. return access_token;
  14. }
  15.  
  16. public void setAccess_token(String access_token) {
  17. this.access_token = access_token;
  18. }
  19.  
  20. public String getToken_type() {
  21. return token_type;
  22. }
  23.  
  24. public void setToken_type(String token_type) {
  25. this.token_type = token_type;
  26. }
  27.  
  28. public Integer getExpires_in() {
  29. return expires_in;
  30. }
  31.  
  32. public void setExpires_in(Integer expires_in) {
  33. this.expires_in = expires_in;
  34. }
  35.  
  36. public String getUserName() {
  37. return userName;
  38. }
  39.  
  40. public void setUserName(String userName) {
  41. this.userName = userName;
  42. }
  43.  
  44. public Date getIssued() {
  45. return issued;
  46. }
  47.  
  48. public void setIssued(Date issued) {
  49. this.issued = issued;
  50. }
  51.  
  52. public Date getExpires() {
  53. return expires;
  54. }
  55.  
  56. public void setExpires(Date expires) {
  57. this.expires = expires;
  58. }
  59. }

使用Retrofit注解方式定义获取token的服务

  1. /**
  2. * 认证服务
  3. */
  4. public interface AuthenticationService {
  5. //获取Token
  6. @POST
  7. Call<BearerToken> getToken(@Field("grant_type") String grantType, @Field("username") String userName, @Field("password") String password);
  8. }

编写单元测试

  1. @Test
  2. public void TestGetToken() throws Exception{
  3. Retrofit retrofit=new Retrofit.Builder()
  4. .baseUrl("http://localhost:2616/")
  5. .addConverterFactory(GsonConverterFactory.create())
  6. .build();
  7. AuthenticationService service=retrofit.create(AuthenticationService.class);
  8. Call<BearerToken> call=service.getToken("password","梦秋@com","123456");
  9. BearerToken token=call.execute().body();
  10. }

运行测试,获取到token的数据,如图:  

搞定认证后,下面再来看看怎么通过token获取数据。

再定义一个用户信息的实体类

  1. /**
  2. * 用户信息
  3. */
  4. public class UserInfo {
  5.  
  6. //用户名称
  7. private String Name;
  8.  
  9. public String getName() {
  10. return Name;
  11. }
  12.  
  13. public void setName(String name) {
  14. Name = name;
  15. }
  16.  
  17. }

使用Retrofit基于注解的方式定义获取用户信息的接口

  1. /**
  2. * 用户处理服务
  3. */
  4. public interface UserService {
  5. @GET("api/User")
  6. Call<UserInfo> getUserInfo(@Header("Authorization") String accessToken);
  7. }

编写单元测试

  1. public void TestGetUserInfo() throws Exception {
  2. Retrofit retrofit=new Retrofit.Builder()
  3. .baseUrl("http://localhost:2616/")
  4. .addConverterFactory(GsonConverterFactory.create())
  5. .build();
  6. UserLoginService service=retrofit.create(UserLoginService.class);
  7. String token=getToken();
  8. Call<UserInfo> userInfos= service.getUserInfo(token);
  9. UserInfo info=userInfos.execute().body();
  1.      Assert.assertNotNull(info);
         Assert.assertNotNull(info.getName());
  1. }

Android 数据处理之Webapi OAuth2.0的更多相关文章

  1. .Net WebApi 实现OAuth2.0认证

    现在多数公众平台提供的api都使用OAuth2.0认证模式,最近在搞Android方面的开发,身份认证和权限控制的各方面比较来说,使用OAuth认证的还是比较靠谱,OAuth2.0的协议可以参考htt ...

  2. 新浪微博Oauth2.0授权认证及SDK、API的使用(Android)

    ---------------------------------------------------------------------------------------------- [版权申明 ...

  3. ASP.NET WebApi 基于OAuth2.0实现Token签名认证

    一.课程介绍 明人不说暗话,跟着阿笨一起玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将是我们需要思考的问题.为了保护我们的WebApi数 ...

  4. .net Core2.2 WebApi通过OAuth2.0实现微信登录

    前言 微信相关配置请参考 微信公众平台 的这篇文章.注意授权回调域名一定要修改正确. 微信网页授权是通过OAuth2.0机制实现的,所以我们可以使用 https://github.com/china- ...

  5. DotNetOpenAuth搭建OAuth2.0

    使用DotNetOpenAuth搭建OAuth2.0授权框架 标题还是一如既往的难取. 我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物 ...

  6. 分享一个单点登录、OAuth2.0授权系统源码(SimpleSSO)

    SimpleSSO 关于OAuth 2.0介绍: http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 系统效果: 登录界面: 首页: 应用界面: ...

  7. ASP.NET Core实现OAuth2.0的ResourceOwnerPassword和ClientCredentials模式

    前言 开发授权服务框架一般使用OAuth2.0授权框架,而开发Webapi的授权更应该使用OAuth2.0授权标准,OAuth2.0授权框架文档说明参考:https://tools.ietf.org/ ...

  8. 使用DotNetOpenAuth搭建OAuth2.0授权框架

    标题还是一如既往的难取. 我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物总归趋于混沌,而OAuth协议就是混沌中的产物,不管是1.0. ...

  9. 新浪微博OAuth2.0的用法

    最近学习Android开发,照着视频开发新浪微博,但是视频里的介绍的是OAuth1.0的授权方式,试了半天发现用不了. 原来现在一般没审核的用户只能使用OAuth2.0了,视频教学里的方法已经过时了. ...

随机推荐

  1. BAT技巧

    FOR使用 枚举input.txt里的每一行,执行call :dosth %%i(以换行符为分割,默认是空格) for /f "delims=" %%i in (input.txt ...

  2. java第一天学习作业及答案

    作业一 一.选择题 1.选出在java中有效的注释声明(AD)(选两项) A.//这是注释 B.*/这是注释*/ C./这是注释 D./*这是注释*/ 2.在控制台运行一个java程序,使用的命名正确 ...

  3. 对于java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决

    在J2EE框架下开发web网站,这种问题经常遇到,只要我们网上搜一下,就可以看到很多版本的,我整理一下: 第一种可能性解决:看看我的项目:主要 是里面的Structs 1.3 (structs 2)和 ...

  4. static成员变量与返回对象的引用

    (1)用static修饰类成员变量(属性),表明该变量是静态的,无论创建多少对象,都只创建一个一个静态属性副本,也就是对象们共享同一个静态属性,这个方法常用的一个用途就是用来计算程序调用了多少次这个类 ...

  5. Android深度探索--HAL与驱动开发----第四章读书笔记

    1. 下载.编译.测试源代码 创建存放下载文件的目录(repo) 下载repo脚本文件 创建用于存放源代码的目录 开始下载源代码. 2. 源代码目录含义摘要 Abi 应用程序二进制接口 Device ...

  6. android layout_weight讲解

    Layout_weight是线性布局,也就是LinearLayout里面用到的,下面通过实验来看这个Layout_weight的特性. 1.当控件的属性android:layout_width=&qu ...

  7. NOIP 考前 高斯消元练习

    POJ 1830 列出n个方程右边为最后的情况 每一行代表第几个灯的情况,每一行代表是否按第几个按钮写出方程即可. #include <cstdio> #include <cstri ...

  8. ASP.net页面代码执行顺序

    <%=TextBox1 .Text%> <asp:TextBox ID="TextBox1" runat="server">abc< ...

  9. JavaScript构造函数学习笔记

    1 理解Javascript constructor实现原理 在 JavaScript 中,每个函数都有名为“prototype”的属性,用于引用原型对象.此原型对象又有名为“constructor” ...

  10. 使用Burpsuite抓取手机APP的HTTPS数据

    1.所需条件 · 手机已经获取root权限 · 手机已经成功安装xposed框架 · 电脑一台 2.详细步骤 2.1 在手机上面安装xposed JustTrustMe JustTrustMe是一个去 ...