• Demo地址:https://github.com/jiutianbian/android_learn/tree/master/TestRetrofit

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文件中申明网络访问权限

三、创建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 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 weather = service.getWeather("广州","JSON","FK9mkfdQsloEngodbFl4FeY3");weather.enqueue(new Callback() {    @Override    public void onResponse(Call call, Response response) {        Log.e("test",response.body().getMessage());    }    @Override    public void onFailure(Call call, Throwable t) {    }

});

输出消息成功如下:


更多相关文章

  1. Android用户登录数据存储的三种方式
  2. Android开发框架xUtils3.x新手教学(二)HTTPS访问
  3. ViewPage第三课自定义viewpage
  4. 跨应用绑定Service
  5. Android(安卓)源码解析之WindowManager添加窗口
  6. Android中自定义适配器的使用
  7. android mediaplayer概况
  8. android froyo framework内RIL.java类分析
  9. Android(安卓)MVP代码生成插件MVPHelper使用教程

随机推荐

  1. android静默安装的实现(一)
  2. Android串口设备的应用实现方案以及与WEB
  3. Android自定义视图四:定制onMeasure强制显
  4. Android将胜过Windows Mobile五大原因
  5. android开发学习笔记(2)android的基本介绍
  6. Android应用程序进程启动过程的源代码分
  7. android应用程序基本原理
  8. android:exported 属性详解
  9. Android(安卓)中自定义控件和属性(attr.x
  10. android中Invalidate和postInvalidate的