概述
Retrofit 是一个类型安全的 REST 客户端,Square 提供的开源产品。它可以直接解析 JSON 数 据变成 JAVA 对象,甚至支持回调操作,处理不同的结果。

官方地址:http://square.github.io/retrofit/ 在官方地址中可以下载 jar 包,也可以在 AndroidStudio 中引入。

使用
1.首先我们要定义一个接口

public interface GitHubService {   @GET("users/list?sort=desc")   Call<List<User>> listUser (@Path("user") String user);
} 

下面讲解一下这个接口

1 . @GET 就是我们的请求方式。主要有 GET, POST, PUT, DELETE, and HEAD    Call 是关键字, User 是我们的 been 对象, listUser 是方法名

2 . 然后看我们括号内的就是我们访问的 URL 地址。再看一下个

@GET("group/{id}/users")
Call<List<User>> listUser (@Path("id") int groupId); 

大括号包含的 id 可以理解为一个变量  = @Path("id") int groupId 等号后面的意思就是  把 groupId 这个参数赋值给我们的 id

@GET("group/{id}/users")
Call<List<User>> listUser (@Path("id") int groupId, @QueryMap Map<String, String> options); 

第一个参数同上,第二个参数就好理解了 URL 要带好多参数 每一个参数的 KEY 和 VALUE 都在我们的 Map 里

@Headers("Cache-Control: max-age=640000")
@GET("widget/list")
Call<List<Widget>> widgetList(); //添加我们的 header @Headers({     "Accept: application/vnd.github.v3.full+json",    "User-Agent: Retrofit-Sample-App"
  }) @GET("users/{username}") Call<User> getUser(@Path("username") String username); 

是不是很强大呢 当然还有很多了比如上传文件什么的这里只讲最基本的 用法其它的需要大家自己查文档了。

第三步 创建一个 Retrofit 对象:

Retrofit retrofit = new Retrofit.Builder() 

//这个 URL 就是和我们接口的 URL 拼接在一起的 .baseUrl("https://api.github.com")      .addConverterFactory(GsonConverterFactory.create()) .build();  

//再用这个 Retrofit 对象创建一个 GitHubService 对象:

//GitHubService.class 是我们的接口名字

GitHubService service = retrofit.create(GitHubService.class);
//拿到接口对象然后调用接口里的方法
Call<List<User>> call = service.listRepos("octocat"); 

//最后你就可以用这个 Githb 对象获得数据了:
call.enqueue(new Callback<List<User>>() {    @Override     public void onResponse(Call<List<User>> call,Response<List<User>> response) { }   @Override     public void onFailure(Call<List<User>> call,  Throwable throwable) { } });

注意:

URL 的定义方式

注意:
URL 的定义方式
public interface GitHubService {
@POST("user")         Call<User> login();
}
public void getUrl() {
Retrofit retrofit = new Retrofit.Builder()             .baseUrl("http:// atguigu.com /base/home")             .addConverterFactory(GsonConverterFactory.create())             .build();
}//最后的 url 是 http:// atguigu.com /base/user public interface GitHubService {         @POST("user")         Call<User> login();
}
public void getUrl () {        Retrofit retrofit = new Retrofit.Builder()             .baseUrl("http://atguigu.com/base/home/")             .addConverterFactory(GsonConverterFactory.create())             .build(); }
//最后的 url 是 http://atguigu.com/base/home/user
public interface GitHubService {         @POST("/user")         Call<User> login();
}
public void getUrl() {         Retrofit retrofit = new Retrofit.Builder()             .baseUrl("http://atguigu.com/base/home/")             .addConverterFactory(GsonConverterFactory.create())             .build(); }
//最后的 url 是 http://atguigu.com/user

转载于:https://www.cnblogs.com/yanglanwan/p/11291556.html

Retrofit的使用相关推荐

  1. 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?

    OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...

  2. Retrofit 网络请求参数注解@Path @Field @Query 等使用

    请求参数呢大致如下,到个别人的图, 下面就说下这些内容使用 其中 @Path.@Query.@QueryMap 使用 Get 请求 , 加入使用了Post 请求注解使用@Path  一般都会是项目崩溃 ...

  3. retrofit 源码分析

    callAdater可以设置RxJava2CallAdapter,目前只可用这个adapter,支持rxjava2的操作:convertAdater可以使用多种进行操作. 调用例子: Retrofit ...

  4. Retrofit源码研究

    2016-05-06 15:35:27 最近抽空研究了一下Retrofit源码,包括API使用.源码结构.使用到的设计模式.SDK的架构设计.作者设计/实现思路等,会形成一系列文章. 以前Retrof ...

  5. java dagger2_从零开始搭建一个项目(rxJava+Retrofit+Dagger2) ---上

    工程结构 Androd studio 替代eclipse给我带来最大的感觉,就是不用每次需要用到什么类库,就得去网上下载一个jar包.只要在项目app/build.gradle中加入代码,就能远程使用 ...

  6. android 添加头参数,Retrofit添加header参数的几种方法

    (1)使用注解的方式 添加一个Header参数 publicinterfaceUserService { @Headers("Cache-Control: max-age=640000&qu ...

  7. Spring Boot 中的 RestTemplate不好用?试试 Retrofit !

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 六点半起床 来源 | juejin.im/post/68 ...

  8. 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听

    2019独角兽企业重金招聘Python工程师标准>>> 发表上篇文章 我一行代码都不写实现Toolbar!你却还在封装BaseActivity? 已是一个月前的事情~ 上篇文章的研究 ...

  9. java 获取动态的service_【Android】动态代理在 Retrofit 中的使用

    首先,什么是动态代理和为什么会有动态代理. 众所周知,Java 是一门静态语言,编写完的类,无法在运行时做动态修改. 一个简单的动态代理如下: 1.先定义一个接口,想要使用动态代理,必须先定义一个接口 ...

  10. Retrofit全攻略——进阶篇

    最近事比较多,距离上次写文章已经过去了一个月了.上一篇文章Retrofit全攻略--基础篇 介绍了Retrofit的基础用法,这篇文章介绍点进阶的用法. 打印网络日志 在开发阶段,为了方便调试,我们需 ...

最新文章

  1. origin画密度直方分布图
  2. python表白对话框-python会话框
  3. linux下的定时任务 每天0点重置 tp5
  4. 考前自学系列·计算机组成原理·常见的数据寻址方式(地址码,操作数位置)
  5. 神策数据颜含:流量见顶与监管趋严的双重压力下,大文娱产品如何突围?
  6. 一个小技巧,让您的ABAP OPEN SQL具有自描述效果
  7. python fortran混合编程_python fortran c 混合编程
  8. python str函数isdigit、isdecimal、isnumeric的区别
  9. centos mysql压缩文件直接恢复_CentOS下利用mysqlbinlog恢复MySQL数据库
  10. Oracle 常见错误代码处理 1
  11. 大数据产品概念和分类
  12. Android模拟器加载自定义镜像
  13. 伦敦大学计算机研究生雅思要求,【留学科普】伦敦TOP10大学雅思要求来了!你够得上吗?...
  14. python画风羽及风羽定义
  15. Java实现泛型解析工具类-GenericsUtils
  16. SMM框架简单用户增删改查
  17. linux乌班图图形化设置ip,在Ubuntu 18.04 Desktop图形中配置静态和动态IP地址的方法...
  18. AutoCAD如何设置A0A1图纸
  19. 学钢琴时如何提高识谱能力
  20. 搭建企业内外网可快速稳定访问的共享文件服务器方案

热门文章

  1. CAF(C++ actor framework)使用随笔(unbecome与keep_behavior用法)
  2. Visro 应用的前端模板工具介绍 -JsRender
  3. hdu 4619 Warm up 2 (二分匹配)
  4. Go开源项目 - gorp使用方法
  5. WPF使用中知识点总结一
  6. 链表在libnet中的实现
  7. 四、hibernate实体对象,事务管理,锁
  8. WebService:JAX-WS实现WebService
  9. Idea安装Eslint插件详解 提示:Plugin NativeScript was not installed解决
  10. jQuery调用或获取iframe中的方法或控件值