retrofit 使用介绍(快速了解和集成retrofit)
来源:互联网 发布:龙猫 知乎 编辑:程序博客网 时间:2024/05/22 15:28
一、简介
不废话!这里是retrofitGithub地址 这里是retrofit的官方文档 。单独学会使用retrofit 只需要进入github地址将最新的依赖包导入就可以使用 这里最新的是 jar包版本是 compile 'com.squareup.retrofit2:retrofit:2.2.0' 导入项目即可使用(retrfit包中已经自带了okhttp3的东西)。 然后只需要 定义跟地址 编写请求的接口 进行调用 三个步骤就可以使用retrofit了。
代码如下:
1.0 定义请求跟地址
public class Constant { public static String BaseURL = "http://litchiapi.jstv.com/";}
2.0 定义请求接口(接口名字自己随意)
public interface Netinterface { @GET("api/GetFeeds?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41") Call<LizhiNews> test01();}3.0 进行调用就可以实现请求了
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_retrfit); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constant.BaseURL) .build(); Netinterface netinterface = retrofit.create(Netinterface.class); netinterface.test01().enqueue(new Callback<LizhiNews>() { @Override public void onResponse(Call<LizhiNews> call, Response<LizhiNews> response) { LizhiNews body = response.body(); Log.e(TAG, body.toString()); } @Override public void onFailure(Call<LizhiNews> call, Throwable t) { } }); }
以上三步就可以实现retrofit的一个基本配置使用了。当然retrfit的使用绝对不仅仅局限于此
二、配合Gson 、rxjava等使用
为了配合Gson快速解析为java对象 要使用Gson进行解析 那就必须要导入Gson的依赖 studio里面自带有 就不在赘述了。 这里要说的是retrfit为了能够使用Gson解析还要添加一个Converters(转换器的依赖 、使用rxjava也是导入rxjava的依赖包 还要导入rxjava的转换器的依赖包) 最新的gson和rxjava等的converter是的包可以从Github项目中的一个叫做retrofit-converters中查找到 导入就可以就行使用了 。
然后剩下的就是根据项目需要去进行各种get post put 等等请求(建议不需要去过于苛刻的去记这些注解等等 只需要使用的时候查看文档就行)
这里借用一下 这是博主的原地址 这篇博客的案例(因为其确实讲解的很清晰)
/** * 通过@GET注解标记位get请求 @GET中填写baseUrl根路径后的路径 * 访问的网络地址由根路径和@GET注解后的路径连接组成 */ //案例一:这种是将根路径后面的路径整个放入了get中进行拼接,相对比较简单,后期和根url拼接 @GET("api/GetFeeds?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41") //此处的返回值可以自行设置,这里我就简单的让他返回请求体的内容: Call<ResponseBody> getResonseBody(); @GET("api/GetFeeds?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41") //案例二:此处的返回值我让他返回的是String类型,具体返回逻辑我一会儿在主方法中创建: Call<String> getJsonString(); //案例三:使用的是茶叶品牌的url,此处将根目录以后的部分进行了截取,但是返回的是一个Tea对象的集合,至于tea对象的生成大家一定都会使用Gson吧,这个我就不细说了。 @GET("category?app_id=161") Call<List<Tea>> getTeas(); //案例四:此处使用的是同案例一,但是path路径不确定的情况情况下,使用{type}代替,当做抽象方法中的一个参数进行接收, @GET("api/{type}?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41") //这里的path就是你要传入的type类型,这里@path“tyle”名称一定要和@get();中的type同名, Call<NewsInfo> getNewsInfo(@Path("type") String type);//String type="GetFeeds" //案例五:有一个键值对的情况,如果不确定时,需要使用此方法,使用@query(键名)将你的值输入: @GET("category")//category?app_id=161 Call<List<Tea>> getTeaByNetWork(@Query("app_id") int id); //案例六:如果键值对是很多的情况下,案例五很明先无法满足需要,这时候需要使用@querymap接收一个map集合来进行拼凑。 @GET("api/GetFeeds") Call<NewsInfo> getInfoByNetWork(@QueryMap Map<String, String> map); //你也可以使用多种方式拼凑结合:使用{},加上参数的拼接等,都是可以灵活运行 案例七: // @GET("api/{type}") // Call<NewsInfo> getInfo(@Path("type") String type,@QueryMap Map<String,String> map); //案例八:网络下载图片, @GET("img") Call<ResponseBody> downLoadImage(); //post形式提交表单数据 登录 注册,post需要服务器,这里无法进行演示,但是代码有,需要的话可以从自己的服务器中进行验证, //@post注解说明采用post提交的形式 @Field("向服务器提交的key") @POST("LoginServlet") @FormUrlEncoded Call<String> login(@Field("username") String userName, @Field("password") String password); //上传单个文件 @Field和@Part 客户端向服务端携带参数发起请求 //@Part 可携带的参数类型更多样 数据流等 @Multipart @POST("UpLoadAction") Call<ResponseBody> upLoadFile(@Part("img") RequestBody body); //可以上传表单中所有的数据 表单文本+附件 @POST("UpLoadAction") Call<ResponseBody> upLoad(@Body() MultipartBody body);
compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'
最后附上 几篇可供参考的retrofit的使用的文章
文章01 文章02 文章03 文章04
- retrofit 使用介绍(快速了解和集成retrofit)
- Retrofit简单介绍和使用
- 【Retrofit】简单介绍和使用
- Retrofit和okhttp的了解和使用
- Retrofit使用介绍
- 【Android】Retrofit的使用(1)-Retrofit介绍
- retrofit 学习和使用
- Retrofit封装和使用
- 使用 RxJava 和 Retrofit
- Retrofit的简单介绍使用
- retrofit的简单使用介绍
- Retrofit介绍
- Retrofit 介绍
- RxJava和Retrofit的介绍
- 网络加载框架Retrofit使用介绍和实例展示
- 网络加载框架Retrofit使用介绍和实例展示
- Retrofit基本介绍和简单的使用方式
- Retrofit和Rxjava的简单了解
- RadioGroup+Fragment实现底部导航栏
- 268. Missing Number
- 每行程序都有Bug
- 蓝桥杯第五届决赛 神奇6位数
- ModBus Slave和ModBus Poll工具软件的使用
- retrofit 使用介绍(快速了解和集成retrofit)
- RxSwift
- VMWare 12 pro CentOS6.5
- 图像处理-FFT
- 应用程序和驱动中使用I2C的流程
- 面试题总结5
- java 上传图片 并压缩图片大小
- Aujaker
- 【直播技术探讨第二章】视频的采集(音频穿插,待续)