Android Retrofit2使用


Demo地址:https://github.com/jiutianbian/android_learn
Android Retrofit2是什么?


Android Retrofit2是一个安全的为Android和Java开发的Http访问框架,它是对OkHttp的进一步封装,它对应的的git地址和官网如下:


github地址:https://github.com/square/retrofit
官网:http://square.github.io/retrofit/
Android Retrofit2能解决什么问题?


不需要自己封装具体的Http请求,线程切换以及数据转换等等
接口统一配置定义,且通过注解的方式设置参数,代码清晰,便于维护管理
可以与RxJava很轻松的关联使用
通过添加各种转换类,能讲response直接转换为需要的对象
Android Retrofit2具体该怎么使用?


一、导入依赖包


IDE和构建工具:androidstudio Gradle
retrofit2版本号:2.3.0
找到gradle配置文件build.gradle(Module:app),注意是app的配置文件,然后在dependencies添加如下配置,然后如下图所示点击sync,重新下载并导入依赖的retrofit2包,需要导入3个包,下面两个需要用来将Response数据进行Gson转换或者String转化。


compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'//ConverterFactory的Gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.3.0'//ConverterFactory的String依赖包
二、在manifest文件中申明网络访问权限


<uses-permission android:name="android.permission.INTERNET"/>
三、创建Po对象


这边我使用网上找的百度天气的一个API接口:http://api.map.baidu.com/telematics/v3/weather?location=广州&output=JSON&ak=FK9mkfdQsloEngodbFl4FeY3


此接口的返回值如下


{"status":201,"message":"APP被用户自己禁用,请在控制台解禁"}
所以我这边先定义了一个PO对象POWeather来封装这个Response消息。


public class POWeather {
    private String status;
    private String message;


    public String getStatus() {
        return status;
    }


    public void setStatus(String status) {
        this.status = status;
    }


    public String getMessage() {
        return message;
    }


    public void setMessage(String message) {
        this.message = message;
    }
}
四、定义API的interface接口


这个接口的这个部分telematics/v3/weather?location=广州&output=JSON&ak=FK9mkfdQsloEngodbFl4FeY3,通过创建如下的interface的getWeather表示


public interface ApiService {


    @GET("/telematics/v3/weather")
    Call<POWeather> getWeather (@Query("location") String location, @Query("output") String ouput, @Query("ak") String ak);
五、创建Retrofit实例


我们创建一个Retrofit实例,来准备调用API,其中baseUrl是这个接口的Root地址,addConverterFactory用来增加返回值转化为Gson对象,addConverterFactory用来增加返回值转化为String对象。


Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://api.map.baidu.com/")
            //增加返回值为Gson的支持(以实体类返回)
            .addConverterFactory(ScalarsConverterFactory.create())
            //增加返回值为Gson的支持(以实体类返回)
            .addConverterFactory(GsonConverterFactory.create())
            .build();


ApiService service = retrofit.create(ApiService.class);
六、调用API接口


通过如下代码开始访问此API接口,访问成功通过Log输出到控制台


Call<POWeather> weather = service.getWeather("广州","JSON","FK9mkfdQsloEngodbFl4FeY3");


weather.enqueue(new Callback<POWeather>() {
    @Override
    public void onResponse(Call<POWeather> call, Response<POWeather> response) {
        Log.e("test",response.body().getMessage());
    }


    @Override
    public void onFailure(Call<POWeather> call, Throwable t) {


    }
});




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值