Android开发笔记:Retrofit的使用
来源:互联网 发布:apache tomcat安装教程 编辑:程序博客网 时间:2024/06/07 00:41
Retrofit 使用记录
简单的说,Retrofit是一个网络请求框架,是对OkHttp的一层封装,可以直接集成到项目中作为网络层使用。
使用入门
Retrofit使用还是很简单的,官网也不过1页的内容而已,Retrofit官网传送。这里记录一下,入门使用,以及请求注解和参数注解的具体含义用法。
添加gradle引用
compile 'com.squareup.retrofit2:retrofit:2.3.0'
创建Retrofit
private Retrofit mRetrofit;mRetrofit = new Retrofit.Builder() .baseUrl("http://www.mocky.io/") //注意,这里的baseUrl 要以 / 结尾。 .build();
以上创建了一个Retrofit对象,简单到3行代码便可以搞定。有了mRetrofit,下一步便是定义请求接口。
public interface NetApiService { @GET("v2/599065cc1200005300946379") // url Call<ResponseBody> getResponseBody(); // 定义了具体请求的方法,通过Retrofit可以拿到接口的代理类,去做具体的请求操作。 // 返回Call类型,泛型是ResponseBody; ResponseBody是OkHttp3中的数据模型,也是Retrofit不添加解析Factory时,默认支持的返回类型。}
接下来就是直接请求网络了
NetApiService netApiService = mRetrofit.create(NetApiService.class); // 不添加 ConverterFactory时,Retrofit默认支持的泛型ResponseBody; Call<ResponseBody> call = netApiService.getStudentInfoResponseBody(); call.enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { try { Log.i(TAG, "onResponse: " + response.body().string()); } catch (IOException e) { e.printStackTrace(); } } public void onFailure(Call<ResponseBody> call, Throwable t) { Log.e(TAG, "onFailure: ", t); } });
我们在这里直接使用了Retrofit默认支持的Call 泛型类型ResponseBody,,但是我们在实际的开发中,网络请求返回的数据类型是多样的,而且Call 既然有了泛型参数了,那肯定可以支持自定义Model实体类的,那具体来看下如何添加支持。
添加ConvertFactory
前边说了,Retrofit默认支持的返回值类型是ResponseBody,如果我们想添加自己的实体类型怎么办了。Retrofit当然也提供了支持,只需要添加对Gson的支持即可,具体的实体类型转换,交给Gson。
当然也需要在Gradle添加以下引用。
compile 'com.squareup.retrofit2:converter-gson:2.3.0' //注意这里,版本是要与Retrofit相对应的。
gradle同步一下后,我们来改造下Retrofit的创建。添加对GsonConverterFactory
的支持
mRetrofit = new Retrofit.Builder() .baseUrl("http://www.mocky.io/") .addConverterFactory(GsonConverterFactory.create())//添加GsonConverterFactory,对Gson的支持, .build();
这是我们可以对请求接口以及具体的请求call改变一下泛型,请求数据后就可以直接拿到具体的实体类了。
除了以上GsonConverterFactory
,Retrofit还支持了以下ConverterFactory
的支持。
有时我们需要的返回值可能不需要直接返回实体类,只需要一个字符串,或者只有”xxxxx”,这样的一个返回,而不是标准的JSON格式,这个时候,我们可以使用ScalarsConverterFactory
,Call 泛型为String,而且此ScalarsConverterFactory
是要放到GsonConverterFactory
之前添加个Retrofit,要不然会异常。
mRetrofit = new Retrofit.Builder() .baseUrl(RetrofitApi.TEST_HOST_URL) .addConverterFactory(ScalarsConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build();
Retrofit注解使用
请求方法注解
Retrofit请求方法的注解,对应的是HTTP的请求方法。包含GET
,POST
,PUT
,DELETE
,HEAD
,OPTIONS
,PATCH
。另一个特殊的注解HTTP
,它作为了Retrofit的一个拓展,是包含以上6种请求方法的,为实现不同请求方法,该注解提供了三个属性:method
,path
,hasbody
.
HTTP注解具体用法:
public interface NetApiService { @HTTP(method = "GET", path = "v2/{id}", hasBody = false) Call<ResponseBody> getResponseBody(@Path("id") int id); // hasBody 表示是否有请求体}
请求参数注解
Headers:添加请求头
Header:添加固定的头
Body:非表单的请求体,实体类,
Field、FieldMap:向POST表单传入键值对。
Part、PartMap:适用于表单字段,文件上传等。
Query、QueryMap:用于表单字段。
Path:URL缺省值
URL:URL设置。
…具体实例,以后补充添加。
- Android开发笔记:Retrofit的使用
- android开发中Retrofit的使用
- Android开发之Retrofit+RxJava的使用
- Retrofit的使用笔记
- 【Android】Retrofit的使用(1)-Retrofit介绍
- 【Android】Retrofit 的一些笔记
- RxJava+Retrofit的Android开发
- Android开发笔记之retrofit网络框架
- android retrofit的基本使用
- android Retrofit的简单使用
- 【Android】Retrofit 2.0 的使用
- 【Android】Retrofit的使用(2)-使用Retrofit提交JSON数据
- Android 笔记之Retrofit
- Retrofit框架使用笔记
- Android Retrofit 2.0的基本使用
- Android中的RxJava,Retrofit,MVP的使用
- android 介绍Retrofit的简单使用
- android框架之Retrofit的使用
- 关于近期爬虫学习的总结
- solr学习一:solr6.6单机环境Linux搭建
- Android studio上面学习Aidl实现复杂数据类型的传递
- 基数排序(转载)
- java 更改器方法(mutator method)与访问器方法(accessor method) 与 GregorianCalendar() 及打印日历Calendar
- Android开发笔记:Retrofit的使用
- 第一天最小二乘法推导
- OD-困难重重的追踪消息断点
- hdu 2999 Stone Game, Why are you always there?
- 2017 Multi-University Training Contest 9 1006 Senior Pan spfa
- Android 日常BUG 解决方案
- TCP 长连接 短连接
- MapReduce求多科平均成绩
- 藏宝图