Retrofit2简单使用
2017-12-20 16:46
197 查看
Retrofit2
Android常用的网络访问HttpClient, HttpUrlConnection,OkHttp(okgo),xUtils, Volley等. Android4.4之后使用OkHttp作为HttpUrlConnection底层实现。这次讲一下Retrofit2怎么使用。Retrofit2实际上是通过注解的方式对okhttp又一次封装。
在AndroidStudio项目中,添加Retrofit2的依赖。
compile ‘com.squareup.retrofit2:retrofit:2.3.0’
程序构建成功后,查看项目具体依赖了多少jar包。
com.squareup.okhttp3:okhttp:3.8.0 com.squareup.okio:okio:1.13.0 com.squareup.retrofit2:retrofit:2.3.0
retrofit2 强制依赖了okhttp3的相关库。这也说明了retrofit2底层是okhttp3具体实现的。okhttp3是用来具体访问网络的,okio是squareup对Java的io/nio的补充,使其更容易访问,存储和处理数据。okio主要功能封装到了ByteString和Buffer里面了。
简单的网络访问(以https://suggest.taobao.com/sug?code=utf-8&q=java&callback=cb为例)。
2.1. 首先实例化okhttp
OkHttpClient client = new OkHttpClient.Builder().build(); //实例化OkHttpClient的时候,还可以设置拦截器,缓存,认证信息,网络拦截器,连接池,超时时间等信息。
2.2. 其次实例化retrofit,并将实例化好的okhttp3关联到retrofit2。
Retrofit retrofit = new Retrofit.Builder().client(client).baseUrl("https://suggest.taobao.com/").build();
2.2.1 …build()方法:
public Retrofit build() { if (baseUrl == null) { throw new IllegalStateException("Base URL required."); } okhttp3.Call.Factory callFactory = this.callFactory; if (callFactory == null) { callFactory = new OkHttpClient(); } Executor callbackExecutor = this.callbackExecutor; if (callbackExecutor == null) { callbackExecutor = platform.defaultCallbackExecutor(); } // Make a defensive copy of the adapters and add the default Call adapter. List<CallAdapter.Factory> adapterFactories = new ArrayList<>(this.adapterFactories); adapterFactories.add(platform.defaultCallAdapterFactory(callbackExecutor)); // Make a defensive copy of the converters. List<Converter.Factory> converterFactories = new ArrayList<>(this.converterFactories); return new Retrofit(callFactory, baseUrl, converterFactories, adapterFactories, callbackExecutor, validateEagerly); }
从这个方法里面可以看出,在实例化Retrofit的时候,baseUrl这个变量是必须要设置的,否则直接抛出IllegalStateException;而其余的一些信息如果不进行,程序里面会给设置一个默认的信息.默认给设置了OkHttpClient实例,OkHttp3连接池、解析工厂、CallAdapter等信息;然后返回了一个retrofit2实例。
2.3. 定义接口文件ApiService。
interface ApiService{ @GET("sug?code=utf-8&q=java&callback=cb") Call<ResponseBody> getGithubApi(); }
定义一个接口信息。Retrofit2中访问的一个网络接口,返回的都是一个Call 实例,准确的说是Call实例,但是这个实例中并没有在实例化Retrofit2中设置addConverterFactory方法,如果需要解析成具体的JavaBean,则又需要依赖 ‘com.squareup.retrofit2:converter-gson:2.0.2’, ‘com.google.code.gson:gson:2.3.1’。当然再配合rxjava,rxandroid来使用的话,将是Android平台很流行的网络访问框架,三者的整合封装本文不讲。
Retrofit2中支持多种注解来定义http网络访问,比如:POST,GET,DELETE,PUT;还支持多种标记注解FormUrlEncoded(使用到的注解都放到了retrofit2.http包下)
已2.3 ApiService接口为例。这个接口中定义了一个getGithubApi方法,该方法使用get方式提交,具体的路径则写到@GET(“sug?code=utf-8&q=java&callback=cb”),我们知道get方式提交参数是直接将参数拼接到url地址后面。同样也可以使用POST注解,表示该表单使用POST方式提交参数,要提交的参数则需要传入到方法里面了,该方法就应该这么定义getGithubApi(@Field(“code”) String code,@Field(“q”) String q,@Field(“callback”) String callback)或者getGithubApi(@FieldMap Map
相关文章推荐
- Retrofit2的简单使用
- Retrofit2简单使用初试用
- Retrofit2简单使用
- Retrofit2的简单使用(一)
- Retrofit2的简单使用
- retrofit2、RxJava简单使用总结
- 不使用向导编写简单的MFC程序
- CFileDialog的使用方法简单介绍
- PHPRPC的简单使用
- ubuntu搭建LAMP全教程及简单使用
- 使用 CXF 做 webservice 简单例子
- Git 的简单使用
- Android 图文混排spannableStringBuilder简单使用
- sed和awk的简单使用
- linux auditd审计的简单使用和理解
- JavaScript在web中的简单使用(二)
- ExtJs4.1:使用简单控件生成form
- Android Retrofit的简单使用案例
- ActiveMQ的简单使用
- loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写