retrofit使用
代码:github
概念:Square基于RESTful风格推出的(基于OKHttp的)网络框架封装(本质仍然是OKHttp)
优点:API设计简洁易用,采用注解、网络请求参数配置更灵活,支持多种解析器,支持Rxjava
使用
1、retrofit开源库、OKHttp网络库、数据解析器继承,注册网络权限
2、创建接口设置请求类型与参数
3、创建retrofit对象,设置数据解析器
4、生成接口对象
5、调用接口方法返回Call对象
6、发送请求
7、处理返回数据
//创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder().baseUrl("https://www.wanandroid.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
//获取UserMgService
UserMgService userMgService = retrofit.create(UserMgService.class);
//调用登录 login方法
Call<UserInfoModel> call = userMgService.login("username", "pwd");
//发送同步请求(需要自己代码开启子线程)
// new Thread(new Runnable() {
// @Override
// public void run() {
// Response<UserInfoModel> response = null;
// try {
// response = call.execute();
// } catch (IOException e) {
// e.printStackTrace();
// }
// Log.d("onAction", "onAction: " + response.body().code);
// }
// }).start();
//发送异步请求
call.enqueue(new Callback<UserInfoModel>() {
@Override
public void onResponse(Call<UserInfoModel> call, Response<UserInfoModel> response) {
Log.d("onAction", "onAction: " + response.body().data.getUsername());
}
@Override
public void onFailure(Call<UserInfoModel> call, Throwable t) {
}
});
//UserMgService.java
public interface UserMgService {
// @GET("login")
// Call<UserInfoModel> login(@Query("username") String username, @Query("password") String pwd);
// post方式
@POST("user/login")
@FormUrlEncoded
Call<UserInfoModel> login(@Field("username") String username, @Field("password") String password);
}
//UserInfoModel.java
public class UserInfoModel {
public UserInfo data;
public int errorCode;
public String errorMsg;
public static class UserInfo {
private String email;
private String icon;
private int id;
private String password;
private int type;
private String username;
private List<Integer> collectIds;
//set/get方法...
}