Retrofit 请求

认知:
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请求的结合使用; 有续集哦!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值