Retrofit简单入门及使用
2017-05-07 16:30
225 查看
一、 简介
Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求。
二、使用
1、 引入依赖
2、 定义网络请求接口
@GET,@POST代表请求方式的不同,接口中每个方法 的参数必须加上注解,各个注解的含义请参见 Retrofit各个注解的含义及作用 ,方法的返回值都是Call<?>类型,如果你想要得到响应体,则返回值应为Call<Response>,也可以返回Call<javaBean>。
JavaBean是请求网络得到json或xml数据,Retrofit会通过你得到Retrofit实例时设置的解析器解析json或xml数据得到javaBean
3、得到网络请求接口的实例
如果要在网络请求时都添加固定的请求头,那么可以给Retrofit添加拦截器,方法如下:
4、发起网络请求
三、配合Rxjava使用
1、 定义网络请求接口
2、 得到网络请求接口实例
3、发起网络请求
结束语:这里只是介绍了Retrofit的简单使用过程,想要深入学习请参考这位大牛的博客Retrofit的使用与深入学习(上), Retrofit的使用与深入学习(下)。如果没有学习过Rxjava,请参考给 Android 开发者的 RxJava 详解,写的非常好。
Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求。
二、使用
1、 引入依赖
compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.squareup.retrofit2:converter-gson:2.0.2' compile 'com.squareup.okhttp3:okhttp:3.2.0' /* 如果Retrofit要和RxJava配套使用,还需要添加如下依赖 */ compile 'io.reactivex:rxjava:1.1.3' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
2、 定义网络请求接口
public interface AppNetInterface { @POST("GetInfo") Call<ResponseBody> getResponse(); @FormUrlEncoded @POST("UserInfo") Call<User> getUserInfo(@Field("username") String username, @Field("password") String password);
@GET,@POST代表请求方式的不同,接口中每个方法 的参数必须加上注解,各个注解的含义请参见 Retrofit各个注解的含义及作用 ,方法的返回值都是Call<?>类型,如果你想要得到响应体,则返回值应为Call<Response>,也可以返回Call<javaBean>。
JavaBean是请求网络得到json或xml数据,Retrofit会通过你得到Retrofit实例时设置的解析器解析json或xml数据得到javaBean
3、得到网络请求接口的实例
// 我自己写的测试网址 String baseUrl = "http://192.168.2.108:8080/TestRetrofit/servlet/"; Gson gson = new GsonBuilder() .setLenient() .create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create(gson)) .build(); AppNetInterface appNetInterface = retrofit.create(AppNetInterface.class);
如果要在网络请求时都添加固定的请求头,那么可以给Retrofit添加拦截器,方法如下:
Interceptor interceptor = new Interceptor() { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request() .newBuilder() .addHeader("token", "valueToken") .build(); return chain.proceed(request); } }; OkHttpClient cline = new OkHttpClient() .newBuilder() .addInterceptor(interceptor) .build(); Gson gson = new GsonBuilder() .setLenient() .create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://192.168.2.108:8080/TestRetrofit/servlet/") .addConverterFactory(GsonConverterFactory.create(gson)) .client(cline) .build();
4、发起网络请求
Call<ResponseBody> call = appNetInterface.getResponse(); call.execute().body; //同步请求,在当前线程发起网络请求 call.enqueue(new Callback<ResponseBody>() { //异步请求,开启新线程发起请求 @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { } });
三、配合Rxjava使用
1、 定义网络请求接口
@FormUrlEncoded @POST("UserInfo") Observable<User> getUser(@Field("username") String username, @Field("password") String password);
2、 得到网络请求接口实例
//同步请求,在当前线程发起请求 RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.create(); //异步请求,开启新线程发起请求 RxJavaCallAdapterFactory rxAdapter2 = RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io()); String baseUrl = "http://192.168.2.108:8080/TestRetrofit/servlet/"; Gson gson = new GsonBuilder() .setLenient() .create(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create(gson)) .addCallAdapterFactory(rxAdapter2) .build(); AppNetInterface appNetInterface = retrofit.create(AppNetInterface.class);
3、发起网络请求
appNetInterface.getUser(< afb5 span class="hljs-string">"username", "password") .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<User>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.e(TAG, "onError: " + e.getMessage() ); } @Override public void onNext(User user) { Log.e(TAG, "onNext: " + user.getUsername() ); tv_text.setText(user.getUsername()); } });
结束语:这里只是介绍了Retrofit的简单使用过程,想要深入学习请参考这位大牛的博客Retrofit的使用与深入学习(上), Retrofit的使用与深入学习(下)。如果没有学习过Rxjava,请参考给 Android 开发者的 RxJava 详解,写的非常好。
相关文章推荐
- 简单入门使用Retrofit+ rxjava 下载图片
- Retrofit入门[简单使用方式介绍哦]
- Retrofit的简单使用(入门篇)-GET请求
- binbinyang-- Retrofit 2.0的简单使用(入门篇)-GET请求
- PHP中使用XML-RPC构造Web Service简单入门
- PHP中使用XML-RPC构造Web Service简单入门
- js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数
- Flex3 快速入门:构建简单的用户界面 使用控件
- js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称
- PHP中使用XML-RPC构造WebService简单入门
- Flex3 快速入门:构建简单的用户界面 使用控件
- Flex3 快速入门:构建简单的用户界面 使用容器
- 地图入门(一):Android上使用Google Maps加标注的最最简单的例子
- 简单的三层框架以及使用dbutils进行数据库操作(入门)
- NHibernate考察系列 02 使用入门 简单映射
- PHP中使用XML-RPC构造Web Service简单入门
- PHP中使用XML-RPC构造Web Service简单入门
- PHP中使用XML-RPC构造Web Service简单入门