由浅入深了解Retrofit(一)
Retrofit
Retrofit与okhttp共同出自于Square公司,Retrofit是一个高质量和高效率的http库,Retrofit是对okhttp的网络框架做了一层封装,Retrofit内部的网络请求还是中转给了okhttp来实现,通过Retrofit我们可以非常简单的进行网络请求,提高效率和正确率;
地址
Retrofit 官网:http://square.github.io/retrofit/
github地址:https://github.com/square/retrofit
使用
在Android项目使用Retrofit框架,首先要先添加依赖引用:
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
Retrofit框架将业务需求进行接口封装,并在接口方法中添加Retrofit注解;
public interface ISearchService {
String HOST = "http://localhost/Store.SOA.Host/api/json/";
@POST("GetCityCountryInfo")
Call<CountryInfo> SearchCountryInfo(@Body SearchCountryInfoRequest request);
}
在ISearchService 接口中定义了查询国家信息的接口,Post注解和Body是Retrofit框架定义的注解;Post标识的是HTTP的POST请求;POST注解中的Value值与HOST组成了这次请求的URL;Body注解代表的POST的请求包体;
使用Retrofit框架,首先是实例化这个Retrofit对象的实例,在Retrofit框架中实例的创建时通过构建模式来创建;
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ISearchService.HOST)
.addConverterFactory(GsonConverterFactory.create())
.build();
ISearchService SearchClient= (ISearchService)retrofit.create(ISearchService.class);
SearchCountryInfoRequest request=new SearchCountryInfoRequest();
request.setCityID(58);
Call<CountryInfo> call=SearchClient.SearchCountryInfo(request);
获取到Retrofit对象的实例后,通过create方法来获取ISearchService 接口的动态代理对象,拿到这个动态代理对象后就可以调用接口的方法;
通过动态代理对象调用接口方法获取到的是实现了Call<T>接口的实例,在Call<T>接口中定义网络请求执行的方法(execute,enqueue),execute方法是同步调用,enqueue是异步调用的返回,这2个方法在底层都是调用的okhttp的网络请求方法;
Response<CountryInfo> result=call.execute();
CountryInfo countryInfo =result.body();
由浅入深了解Retrofit(一)的更多相关文章
- 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...
- Android Retrofit 2.0 使用-补充篇
推荐阅读,猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 5.Android MVP+Retrofit+RxJava实践小 ...
- Android MVP+Retrofit+RxJava实践小结
关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava ...
- PropertyGrid控件由浅入深(二):基础用法
目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...
- PropertyGrid控件由浅入深(一):文章大纲
Winform中PropertyGrid控件是一个非常好用的对象属性编辑工具,对于Key-Value形式的数据的处理也是非常的好用. 因为Property控件设计良好,在很小的空间内可以展示很多的内容 ...
- 快速Android开发系列网络篇之Retrofit
Retrofit是一个不错的网络请求库,用官方自己的介绍就是: A type-safe REST client for Android and Java 看官网的介绍用起来很省事,不过如果不了解它是怎 ...
- android快捷开发之Retrofit网络加载框架的简单使用
大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...
- Retrofit结合RxJava使用指南
Retrofit结合RxJava使用指南 Retrofit是一个当前很流行的网络请求库, 官网的介绍是: "Type-safe HTTP client for Android and Jav ...
- 用Retrofit发送请求中添加身份验证
用Retrofit发送请求中添加身份验证====================在安卓应用开发中, retrofit可以极大的方便发送http网络请求,不管是GET, POST, 还是PUT, DEL ...
随机推荐
- ruby中的可调用对象--方法
上一篇讲了ruby中的可调用对象proc和lambda,他们都是块转换成的对象.ruby中的可调用对象还有方法.通过使用method方法,并且以方法名作为参数(字符串或者符号),就可以得到一个方法对象 ...
- HDU - 5406 CRB and Apple (费用流)
题意:对于给定的物品,求两个在高度上单调不递增,权值上单调不递减的序列,使二者长度之和最大. 分析:可以用费用流求解,因为要求长度和最大,视作从源点出发的流量为2的费用流,建负权边,每个物品只能取一次 ...
- 两句话,实现android 4.4以上实现沉浸式状态栏
效果图如下,就是状态栏和actionbar保持一致的颜色,非常漂亮 1:在Activity的OnCreate函数 if (Build.VERSION.SDK_INT >= Build.VERSI ...
- 一个辅助AWVS C段扫描的小php脚本
小菜写的小脚本,大牛轻拍砖~~~~~~ 渗透前信息收集时喜欢用椰树来获取旁站及二级域名,然后根据二级.三级域名地址扩展C段,扩大扫描业务边界.例如 以联想为例 但,各个旁站对应IP可能不同,或有CDN ...
- 关于js中的取值问题
像这样是获取不到值的,弹出的消息是 underfined:<html><style type="text/css">input { border: 1px ...
- tensorboard实现训练的可视化
tensorboard是tensorflow自带的可视化工具 输入命令可以启动tensorboard服务. tensorboard --logdir=your log dir 通过浏览器localho ...
- Java-线程池专题(什么是线程池,如何使用,为什么要用)
1.什么是线程池: java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池 多线程技术主要解决处理 ...
- myeclipse自动生成相应对象接收返回值的快捷键
在你要自动生成返回值对象的那一行的末尾(注意一定要将光标点到最后),按Alt+Shift+L:就可以了.
- Oracle中用sql语句取随机数和整数
--- 应用round(5.678,3)保留小数 应用floor(5.678)保留整数 应用dbms_random.value(30,50)取得随机数 --- dbms_random包 获得随机小数S ...
- JS正则表达式从入门到入土(8)—— REGEXP对象属性
对象属性 常用对象属性主要有以下几种: 1.global: 是否全文搜索,默认false 2.ignore case:是否大小写敏感,默认是false 3.multiline:多行搜索,默认值是fal ...