第三方开源库:retrofit

来源:互联网 发布:网络推广服务费 编辑:程序博客网 时间:2024/05/15 08:39

参考:
android 介绍Retrofit的简单使用
急速开发系列——Retrofit实战技巧

简介

retrofit是一种网络请求框架,内部是通过okHttp实现的

gradle

使用retrofit需要在module的dependencies添加依赖:

dependencies {    ...    compile 'com.squareup.retrofit2:retrofit:2.1.0'    ...}

如果需要用retrofit自带的gson来解析数据,那么需要添加下面的解析方式,但是须知道json格式

//使用Gson解析,compile 'com.squareup.retrofit2:converter-gson:2.1.0'

如果自己解析json数据,那么需要添加:

//得到的数据是String类型compile 'com.squareup.retrofit2:converter-scalars:2.1.0'

这里需要值得注意的是导入的retrofit2包的版本必须要一致,否则就会报错。

代码使用步骤

  1. 创建接口
  2. 创建Retrofit对象
  3. 获取创建的接口
  4. 调用接口里面的方法,获取Call
  5. 请求网络

简单使用

先看Demo,再解释。
Demo下载地址:RetrofitDemo01

这里写图片描述

Step1:创建接口

接口里面是app的所有的请求方法,@GET @POST代表是哪一种请求方式,@Path+@Query
{占位符}和PATH只用在URL的path部分,url中的参数使用Query和QueryMap 代替,保证接口定义的简洁

public interface AppUrl {    //无参    @GET("check2")    Call<UpdateBean> get1();    //有参    @POST("ip2addr")    Call<IPBean> post1(@Query("ip") String ip, @Query("key") String key);    @GET("ip2addr")    Call<String> get3(@Query("ip") String ip, @Query("key") String key);}

Step2:创建retrofit对象

addConverterFactory表示使用解析工厂

String url = "http://192.168.1.11:8080/QQ/";//1 创建Retrofit对象Retrofit retrofit = new Retrofit.Builder()        .baseUrl(url)        .addConverterFactory(GsonConverterFactory.create())        .build();

Step3:获取创建的接口

获取我们创建的接口

//2 获取网络接口 AppUrlAppUrl appUrl = retrofit.create(AppUrl.class);

Step4:调用接口里面的方法,获取Call

//3 调用AppUrl里面的方法获取callCall<UpdateBean> call = appUrl.get1();

Step5:请求网络

call.enqueue(new Callback<UpdateBean>() {    @Override    public void onResponse(Call<UpdateBean> call, Response<UpdateBean> response) {        //response.body()就是泛型        UpdateBean bean = response.body();        Logger.d("id=" + bean.getId());    }    @Override    public void onFailure(Call<UpdateBean> call, Throwable t) {        Logger.d("message=" + t.getMessage() + "\n toString=" + t.toString());    }});

ConverterFactory解析工厂

可以添加多种解析方式,

Retrofit retrofit = new Retrofit.Builder()               .baseUrl("http://106.3.227.33/pulamsi/")               //增加返回值为String的支持               .addConverterFactory(ScalarsConverterFactory.create())               //增加返回值为Gson的支持(以实体类返回)               .addConverterFactory(GsonConverterFactory.create())               //增加返回值为Oservable<T>的支持               .addCallAdapterFactory(RxJavaCallAdapterFactory.create())               .build();

请求失败的处理

@Overridepublic void onFailure(Call<String> call, Throwable t) {    Logger.d("message=" + t.getMessage() + "\n toString=" + t.toString() + "\n" + "code=" + t.hashCode());    if (t != null && t.getMessage().startsWith("Failed to connect")) { //Unable to resolve host        Logger.d("请检查网络是否畅通");    }}

网络请求框架(一):android-async-http
网络请求框架(二):xUtils
网络请求框架(三):Volley

Volley的使用(一):get+post
Volley的使用(二):加载网络图片
Volley的使用(三):Volley与Activity的联动 + Volley的二次封装

网络请求框架(四):OkHttp
网络请求框架(五):Retrofit

0 0
原创粉丝点击