Retrofit的使用
概述
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的使用相关推荐
- 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?
OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...
- Retrofit 网络请求参数注解@Path @Field @Query 等使用
请求参数呢大致如下,到个别人的图, 下面就说下这些内容使用 其中 @Path.@Query.@QueryMap 使用 Get 请求 , 加入使用了Post 请求注解使用@Path 一般都会是项目崩溃 ...
- retrofit 源码分析
callAdater可以设置RxJava2CallAdapter,目前只可用这个adapter,支持rxjava2的操作:convertAdater可以使用多种进行操作. 调用例子: Retrofit ...
- Retrofit源码研究
2016-05-06 15:35:27 最近抽空研究了一下Retrofit源码,包括API使用.源码结构.使用到的设计模式.SDK的架构设计.作者设计/实现思路等,会形成一系列文章. 以前Retrof ...
- java dagger2_从零开始搭建一个项目(rxJava+Retrofit+Dagger2) ---上
工程结构 Androd studio 替代eclipse给我带来最大的感觉,就是不用每次需要用到什么类库,就得去网上下载一个jar包.只要在项目app/build.gradle中加入代码,就能远程使用 ...
- android 添加头参数,Retrofit添加header参数的几种方法
(1)使用注解的方式 添加一个Header参数 publicinterfaceUserService { @Headers("Cache-Control: max-age=640000&qu ...
- Spring Boot 中的 RestTemplate不好用?试试 Retrofit !
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 六点半起床 来源 | juejin.im/post/68 ...
- 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听
2019独角兽企业重金招聘Python工程师标准>>> 发表上篇文章 我一行代码都不写实现Toolbar!你却还在封装BaseActivity? 已是一个月前的事情~ 上篇文章的研究 ...
- java 获取动态的service_【Android】动态代理在 Retrofit 中的使用
首先,什么是动态代理和为什么会有动态代理. 众所周知,Java 是一门静态语言,编写完的类,无法在运行时做动态修改. 一个简单的动态代理如下: 1.先定义一个接口,想要使用动态代理,必须先定义一个接口 ...
- Retrofit全攻略——进阶篇
最近事比较多,距离上次写文章已经过去了一个月了.上一篇文章Retrofit全攻略--基础篇 介绍了Retrofit的基础用法,这篇文章介绍点进阶的用法. 打印网络日志 在开发阶段,为了方便调试,我们需 ...
最新文章
- origin画密度直方分布图
- python表白对话框-python会话框
- linux下的定时任务 每天0点重置 tp5
- 考前自学系列·计算机组成原理·常见的数据寻址方式(地址码,操作数位置)
- 神策数据颜含:流量见顶与监管趋严的双重压力下,大文娱产品如何突围?
- 一个小技巧,让您的ABAP OPEN SQL具有自描述效果
- python fortran混合编程_python fortran c 混合编程
- python str函数isdigit、isdecimal、isnumeric的区别
- centos mysql压缩文件直接恢复_CentOS下利用mysqlbinlog恢复MySQL数据库
- Oracle 常见错误代码处理 1
- 大数据产品概念和分类
- Android模拟器加载自定义镜像
- 伦敦大学计算机研究生雅思要求,【留学科普】伦敦TOP10大学雅思要求来了!你够得上吗?...
- python画风羽及风羽定义
- Java实现泛型解析工具类-GenericsUtils
- SMM框架简单用户增删改查
- linux乌班图图形化设置ip,在Ubuntu 18.04 Desktop图形中配置静态和动态IP地址的方法...
- AutoCAD如何设置A0A1图纸
- 学钢琴时如何提高识谱能力
- 搭建企业内外网可快速稳定访问的共享文件服务器方案
热门文章
- CAF(C++ actor framework)使用随笔(unbecome与keep_behavior用法)
- Visro 应用的前端模板工具介绍 -JsRender
- hdu 4619 Warm up 2 (二分匹配)
- Go开源项目 - gorp使用方法
- WPF使用中知识点总结一
- 链表在libnet中的实现
- 四、hibernate实体对象,事务管理,锁
- WebService:JAX-WS实现WebService
- Idea安装Eslint插件详解 提示:Plugin NativeScript was not installed解决
- jQuery调用或获取iframe中的方法或控件值