#使用Retrofit步骤
添加build.gradle
12 compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.squareup.retrofit2:converter-gson:2.3.0
##如何和请求数据
###GET方式
####首先定义一个接口 用于存放所有的请求地址
例如:
这样里面就有了你要请求的一些接口,@GET
注解表示请求的是get方法
注解括号里面的 "api/v2/getAliasName.jspx/userid={userid}"
这是你要请求的路径,
就想我们正常写网络请求时的写法一样 一般写一个请求拼在一起
host+path
如:
Call@Path
这个注解路径替换,会用传进来的userid 替换路径上的{userid};@Query
这个注解,会以key-valule的形式拼接在路径的后面
如 :/jeecms/api/v2/getAliasName.jspx?userid=4910
写一个GET请求
####1.先创建一个Retrofit
baseUrl
就是你要请求的host.
####2.具体请求哪个接口
请求了HttpService 中getBaidu()方法。这样就可以了?
刚开始以为这就行了,运行崩溃,会发现这个异常
java.lang.IllegalArgumentException: Unable to create converter for class java.lang.String
这是这个请求没有转换器,不能把返回来的数据转换成String 类型。
那么应该如何做?
将1.中添加如上的转换器就可以了,return new Converter<ResponseBody, String>
,泛型中的String就是要转换的类型,public String convert(ResponseBody value)
方法中 将value
转成String就可以了。
这样太麻烦,所以我们可以用 我们在build中添加的 这个库来转换compile 'com.squareup.retrofit2:converter-gson:2.3.0
.addConverterFactory(GsonConverterFactory.create())
一句话就行了。
这样是不是就舒服多了。
###POST方式
@POST(“api/v2/getAliasName.jspx”)
@FormUrlEncoded
Call
注解用@POST
,和@FromUrlEncoed
用@Field()
来注解key,传进来的就是value。这并不会追加在路径后面。
如:
userid=4910
学习链接:
好用的网络请求库Retrofit2(入门及讲解)
你真的会用Retrofit2吗?Retrofit2完全教程