Retrofit2 的基本使用 (一)
2017-07-19 01:24
148 查看
概述
Android开发中我们常用的基本网络请求方式有OkHttp,HttpClient, HttpUrlConnection这三个都是基于http请求封装的一个网络请求客户端。 Retrofit2是由Square公司开发的一个网络请求调度框架,对OkHttp进行了外层封装,方便我们使用。 本文主要介绍内容: - 基本的GET/POST请求的使用 - Gson与Converter
一 . 基本的GET/POST请求的使用
使用到的公共API http://www.tngou.net/api/cook/list http://www.tngou.net/api/top/list
1.要想使用Retrofit2框架,首先需要导包
Retrofit2的包: compile 'com.squareup.retrofit2:retrofit:2.3.0' GSON解析的包 compile 'com.squareup.retrofit2:converter-gson:2.3.0'
2.定义请求接口
public interface IRetrofitService { /** * 通过注解来设置请求方式(GET请求),括号里面参数是请求的子目录({category} ,相当于一个占位符) * @Path("category")String category 该参数用来填补{category} * @Query("id") int id ,@Query("page") int page,@Query("rows") int rows :GET请求参数,会自动按照Http协议格式添加到url上 */ @GET("/api/{category}/list") Call<Tngou> getList(@Path("category")String category,@Query("id") int id, @Query("page") int page, @Query("rows") int rows); /** * POST请求 * @FormUrlEncoded 该注解表示表单请求 * @Field("id") int id 表单数据(自动安装格式添加到请求头上) */ @POST("/api/{category}/list") @FormUrlEncoded Call<Tngou> postList(@Path("category") String category, @Field("id") int id,@Field("page") int page,@Field("rows") int rows);
}
更多详细注解请参考:你真的会用Retrofit2吗?Retrofit2完全教程
3. 使用代码
//1.创建Retrofit实例 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://www.tngou.net")// 设置baseUrl // 设置数据转换器(使用Gosn解析JSON数据) .addConverterFactory(GsonConverterFactory.create()) .build(); // 2.返回自定义接口的代理对象(内部使用了java动态代理) IRetrofitService retrofitService = retrofit.create(IRetrofitService.class); //3.使用代理对象调用自己定义的请求方法,得到一个执行请求的对象 Call<Tngou> call = retrofitService.getList("cook",0, 1, 10); Call<Tngou> callPost = retrofitService.postList("cook",0, 1, 10); //4.使用该请求对象发起异步或同步请求 call.enqueue(new Callback<Tngou>() {// 发起异步请求 // 请求成功,返回请求结果(在主线程,可以直接操作控件) @Override public void onResponse(Call<Tngou> call, Response<Tngou> response) { adapter.addDatas(response.body().getTngou()); } // 请求失败 @Override public void onFailure(Call<Tngou> call, Throwable t) { t.printStackTrace();// 输出失败信息 } }); // callPost.enqueue(this);
4.什么是Converter
默认情况Retrofit只是将请求回来的数据转换为ResponseBody,而Converter就是Retrofit为我们提供用于将ResponseBody转换为我们想要的类型的一个转换器。结合GSON使用,提供了一个GsonConverter,我们只需要提供一个GSON解析需要使用的对象,就可以自动为我们解析GSON数据了。
GSON使用教程
相关文章推荐
- Retrofit的使用与基本的封装
- Retrofit 基本使用教程
- Retrofit网络请求框架的基本使用
- Retrofit基本使用
- Retrofit的基本使用
- Retrofit2.0的基本使用
- 《Retrofit系列》Retrofit的基本使用
- Retrofit的基本使用
- Android网络编程(九)Retrofit2前篇[基本使用]
- Retrofit 2.X使用详解之基本使用
- 【Retrofit 】Retrofit 基本使用教程
- MVP+retrofit+rxjava基本使用实例
- Retrofit 2.0 基本使用
- Retrofit-基本使用
- Retrofit+RxJava(2)-基本使用
- retrofit的基本使用(1)
- Retrofit2.0(一)retrofit基本使用讲解和Converter转换器使用
- OkHttp,Retrofit 1.x - 2.x 基本使用
- Retrofit+Rxjava+okhttp基本使用
- Android网络框架 - Retrofit基本使用