添加依赖
//引入retrofit
compile 'com.squareup.retrofit2:retrofit:2.1.0'
//引入json转换器,方便将返回的数据转换为json格式
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
权限
<!--访问网络-->
<uses-permission android:name="android.permission.INTERNET" />
<!--读取内存 (6.0之前)-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--读写内存 (6.0之前)-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
retrofit介绍
互联网上的资料很多很杂,在收集资料初步了解后,我先粗糙地认为:Retrofit 适用于与 Web 服务器提供的 API 接口进行通信。
当你想要做更多的 HTTP 操作时,可以使用 OkHttp,Retrofit的底层也是由 OkHttp 网络加载库来支持的。
关于 Retrofit 的原理,有三个十分重要的概念:『注解』,『动态代理』,『反射』。将会在以后逐步进行分析
初步使用
假设我们首先要访问这个URL:http://www.jianshu.com/u/6b74d8580d64
注解
@GET和@Path
1.首先定义一个baseUrl:(http://www.jianshu.com)
2.定义get请求
public interface APIInterface {
@GET("/u/{id}")
Call<TestModel> getData(@Path("id") String id);
}
这里出现了@GET和@Path注解
@GET的作用就是说明请求方式,而后面的参数相当于baseUrl+/u/{id};
@Path的作用相当于占位符,由它的参数指定{id}的值,例如这里如果传入的参数id值为6b74d8580d64,那么此时访问的链接即为http://www.jianshu.com/u/6b74d8580d64
@Query和QueryMap
@Query作用是添加一个参数
//如12306的查询接口https://kyfw.12306.cn/otn/lcxxcx/query?
//purpose_codes=ADULT&queryDate=2016-03-18&from_station=BJP&to_station=CDW,写法如下:
@GET("/otn/lcxxcx/query")
Call<Result> query(@Query("purpose_codes") String codes, @Query("queryDate") String date,
@Query("from_station") String from, @Query("to_station") String to)
@QueryMap作用同@Query,但它可以添加多个键值对参数
未完待续