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(一)的更多相关文章

  1. 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~

    一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...

  2. Android Retrofit 2.0 使用-补充篇

    推荐阅读,猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 5.Android MVP+Retrofit+RxJava实践小 ...

  3. Android MVP+Retrofit+RxJava实践小结

    关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava ...

  4. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  5. PropertyGrid控件由浅入深(一):文章大纲

    Winform中PropertyGrid控件是一个非常好用的对象属性编辑工具,对于Key-Value形式的数据的处理也是非常的好用. 因为Property控件设计良好,在很小的空间内可以展示很多的内容 ...

  6. 快速Android开发系列网络篇之Retrofit

    Retrofit是一个不错的网络请求库,用官方自己的介绍就是: A type-safe REST client for Android and Java 看官网的介绍用起来很省事,不过如果不了解它是怎 ...

  7. android快捷开发之Retrofit网络加载框架的简单使用

    大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...

  8. Retrofit结合RxJava使用指南

    Retrofit结合RxJava使用指南 Retrofit是一个当前很流行的网络请求库, 官网的介绍是: "Type-safe HTTP client for Android and Jav ...

  9. 用Retrofit发送请求中添加身份验证

    用Retrofit发送请求中添加身份验证====================在安卓应用开发中, retrofit可以极大的方便发送http网络请求,不管是GET, POST, 还是PUT, DEL ...

随机推荐

  1. 1-CommonJs

    诞生背景JS没有模块系统.标准库较少.缺乏包管理工具:前端端没有模块化编程还可以,因为前端逻辑没那么复杂,可以工作下去,在服务器端逻辑性那么强必须要有模块为了让JS可以在任何地方运行,以达到Java. ...

  2. hadoop 一些命令

    关闭访问墙  service iptables stop hadoop dfs -mkdir input hadoop dfs -copyFromLocal conf/* input hadoop j ...

  3. 浅谈HTTP请求与响应

    HTTP协议用于客户端和服务器之间的通信,请求访问的一段是客户端,提供资源响应的一段是服务器端. HTTP通信是采用请求应答的方式来进行的,客户端发出请求,服务器响应.如果没有客户端的请求,服务器端是 ...

  4. 自定义圆形头像CircleImageView的使用和源码分析

    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0806/3268.html tools:context="com.ex ...

  5. Java银行家算法

    实验存档,代码特别烂.. 测试.java package operating.test; import operating.entity.bank.Bank; import operating.ent ...

  6. igraph Tutorial

      igraph Tutorial¶   参考http://www.cs.rhul.ac.uk/home/tamas/development/igraph/tutorial/tutorial.html ...

  7. 三年半Java后端面试经历

    经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征. 鹅厂 面试职位:go后端开发工程师,接受从Java转语言 都知道鹅厂是cpp的主战场,而以cpp为背景 ...

  8. php 与 c++ openssl 加密通信

    $key = '1234567890123456'; $iv = '1234567890123456'; $enc = openssl_encrypt("hello wolrd!" ...

  9. 关于JavaScript对象中的一切(二) -- 继承

    先上一张我制作的思维导图.

  10. 读取Jar中的json文件

    现在操作json的jar 都是用的fastjson, 如果需要读取的json文件不在jar包里面,则可以这样获取到: String path = this.getClass().getClassLoa ...