1.Retrofit的简介
最新的Retrofit框架底层的请求的是okhttp,okhttp的执行效率高于HttpClient和HttpUrlConnection
2.Retrofit的功能
Retrofit是一个网络加载框架,相比Asynctask和Volley运行的效率更高,实现起来更加简单
支持 GET,POST,PUT
3.Retrofit的使用步骤(支持同步请求和异步请求)
3.1下载相关的依赖包
Retrofit,okhttp,oi,Gson,GsonConvert;
Retrofit,okhttp,oi,GsonConvert这几个依赖包都是Sqareup团队开发的
3.2添加相应网络权限
只有网络权限
3.3代码步骤
1.定义一个接口(接口的作用是封装URL地址和数据的)和请求
public interface QsService{
//Get请求
@GET("/相对路径")//如"/Demo/{text}/index.jsp?"
Call<T> getT(@Path("text") String text,@Query("page") int page);
//解释:
这里的"{" 和 "}" 所括起来的部分是我们要替换的参数,替换的方式就是在getT这个方法中声明一个注解@Path("text"),里面的参数一定要去括号里的参数对应。
用@Query标注的参数是页数 ,对应的相对地址为"/Demo/{text}/index.jsp?page=1"
@FormMutiled
@POST("/相对路径")//如"/Demo/{text}/index.jsp?"
Call<T> postT(@Path("text") String text,@Field("key1") String value1,@Field("key2") String value2 );
//post请求
请求参数的定义为
postT的方法传入参数,有几个参数就传入几个参数,传入的方式为 @Field("key") String value。的形式,如果是可变参数的应用FieldMap Map<String,String> map,就可以。
}
2.实例化Retrofit
Retrofit retrofit=new Retrofit.Builder()
.baseUrl("http://www.baidu.com")//这个是基地址:不能包含单"/"
.convert(GsonConvertFactory.create())
.build();
3.实例化接口服务类
QsService qsService = retrofit.create(QsService.class);
4.实例化请求
Call<T> callT = qsService.getT(传入相应的参数);
5.异步执行请求
callT.enqueue(new Callback()
{
public void success(Response<T> response){
T t = response.body();
}
public void failure(String msg,Exception exception){};
});
注:T的泛型种类 (数据模型类或者数据实体类,还可以是ResponseBody)