Retrofit 请求

来源:互联网 发布:河北盘古网络怎么样 编辑:程序博客网 时间:2024/05/18 03:01

认知:
Retrofit 是square开发的一个Android与Java的REST 的一个网络请求库; 相对于其他网络库来说他很容易让程序员理解,接纳 其次是有很多灵活的特性; retrofit可以与RxJava 结合一起使用 换可以加载Fresco图片; 他可以请求: @GET @POST @DELETE @PUT @HTTP @HEAD @OPTIONS @PATH 目前一共八网络请求的方法。

他的本质就是基于Okhttp 的一个封装;

Retrofit 的内部流程:
App 首先通过 Retrofit 去请求网络 其实就是利用 Retrofit 接口层封装的请求参数 和请求头 url 参数什么的 然后就交给人家Okhttp 去操作了 ,然后ok请求好了再给Retrofit 根据用户的需求去解析到数据;

常用的 网络请求框架
http Loppj
volley 谷歌
okhttp square
Retrofit square

使用:
1. 导入依赖:

              compile 'com.squareup.retrofit2:retrofit:2.0.2'               // Retrofit库              compile 'com.squareup.okhttp3:okhttp:3.1.2'              // Okhttp库            compile 'com.squareup.retrofit2:converter-gson:2.0.2'           //这个在做Gson 解析数据  是个Gson 解析的工厂 如果结合ReJava 使用  添加:             compile 'io.reactivex:rxjava:1.0.14'             compile 'io.reactivex:rxandroid:1.0.1' 

2首先讲讲 Retrofit 及格基本用到的 注解
@GET 相当于我们平常使用的 使用的get post请求方式 只不过Retrofit 使用注解的形式更方便了 很多的安卓程序员

    @GET("mobile/capture")    Call<ResponseBody> getCapture(@Query("phone") String phone);   @POST 这个表明也就是一个Post 处理   @Header 作为方法的参数传入,用于添加不固定值的Header,该注解会更新                       已有的请求头   @Header("Cache-Control:public,max-age=120")   @GET("mobile/capture")    Call<ResponseBody> getCapture(@Query("phone") String phone);//使用@Headers添加多个请求头@Headers({"User-Agent:android""Cache-Control:public,max-age=120",})

@GET(“mobile/active”)
Call getActive(@Query(“id”) int activeId);

最容易混淆的是put,post,patch这三者,简单的说,post表示新增,put可以理解为完整替换,而patch则是更新资源。

3.结合RxJava 的使用
导入该导入的依赖

创建 一个接口 比如是Get 请求的话 如下:
这里写图片描述

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url) //设置url
.addConverterFactory(GsonConverterFactory.create()) //添加或开启一个Gson的工厂
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//添加Rxjava 工厂的使用
.build(); //

IutilsGet get = retrofit.create(IutilsGet.class); //这个是 通过retrofit.create() 传入你 接口 返回那个接口的对象;

Observable observable = get.Get(page); //因为是Rxjava 所以 利用他的被观察者 来接受从 接口里面调到数据;

observable.subscribeOn(Schedulers.io()) // 设置他的io异常
.observeOn(AndroidSchedulers.mainThread()) //弄到主线程去操作
.subscribe(new Observer() { //Rxjava 的订阅者 来拿到数据
@Override
public void onCompleted() {
//
}

       @Override       public void onError(Throwable e) {               //        }       @Override       public void onNext(Myer myDatas) {          inter.Success(myDatas);   //拿到你所要的数据        }       });    结束  ok   这就是一个更简单的一个用Retrofit 与 Rxjava 的Get请求的结合使用; 有续集哦!!
原创粉丝点击