废话不多说,我们直接进入正题。
使用retrofit首先得依赖一波。
compile 'com.squareup.retrofit2:retrofit:2.2.0'
1.retrofit是将HTTP API转换成JAVA接口来试用:
public interface MyApi {
@GET("\\伪路径")
Call<ResponseBody> myFun(@Body response body);
}
2.创建核心类Retrofit并生成上述接口的实现
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("\\路径")
.build();
MyApi myApi =retrofit.create(MyApi.class);
3.创建请求体
1)表单形式请求体
ResquestBody body = new FromBody.builder()
.add("name","123456")
.add("password","123456")
.build();
2)键值对形式请求体
ResquestBody body = RequestBody.creat(null,"{\n"+"\"username\":\"aaa",\n"+"\"password\":\"123456\"\n"+"}");
4.接口对象创建出Call可做同步或异步HTTP请求
Call<ResponseBody> call =myApi.Myfun(responsebody);
1)同步执行
call.execute();
2)异步执行
call.enqueue(new Callback<ResponseBody>() {
// 请求成功
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
// 可以更新UI的
}
// 请求失败
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
// 可以更新UI的
}
});
这个流程就是使用retrofit最简单的用法了。
这里牵涉到了Json解析,如果想要简单一些,那么我们可以依赖Gson来解析或生成json对象或json字符串
使用方法,依赖
compile 'com.google.code.gson:gson:2.8.0'
toJson方法:将实体对象转换成json字符串
String str = new Gson().toJson(user);
fromJson方法:将字符串解析生成实体类对象
User user = new Gson().fromJson(json,User.class);
当我们每次构建请求时都需要用Gson来生成或者解析Json数据,感觉很麻烦,所以此时,我们就可以使用另一种武器了,也就是转换器。
默认情况下,Retrofit只能将HTTP消息头反序列化成OkHttp的ResponseBody类型,它的@Body注解也只接受RequestBody类型。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("//路径")
.addConverterFactory(GsonConverterFactory.create())
.build();
MyApi myApi = retrofit.create(MyApi.class);
这样我们每次发送的请求体或者响应体里面得到的响应就为我们转换器所定义的实体类了。
大概就是这样子了,如有不正确的地方,请大家多多指出,谢谢!!!