最近学习了Retrofit的基本用法,下面跟大家分享一下自己的总结
1.在app中的build.gradle添加依赖
compile'com.squareup.retrofit2:retrofit:2.2.0'
Json解析库
compile'com.squareup.retrofit2:converter-gson:2.0.0-beta3'
2.创建接口:
public interface Api{}
GET请求:
@PathQuery
@GET("user")CallgetUserInfoWithQuery(@Query("more") String more);
@Path
@GET("user/{id}")CallgetUserWithPath(@Path("id")inti);
两者的区别为:
@Query是直接把参数拼接在url后面,如:url?more=more
@Path是把传进来的参数直接填进去,注意要相同的字段
POST请求:
Json格式:
先建立Bean:UserParam类
接下来创建方法:
@POST("login/json")CallloginWithJson(@BodyUserParam param);
Form表单格式
@FormUrlEncodedCallloginWithForm(@Field("name")String name,@Field("psw")String psw);
@Headers({"User-Agent :"," asendi you:pengge"})//添加头信息:字符串数组
@POST("form")
其中Headers()是添加请求头信息,外字符串数组
3.创建Retrofit对象
Retrofitretrofit =newRetrofit.Builder()
.baseUrl("要访问的url")
.addConverterFactory(GsonConverterFactory.create())
.build();
其中加上addConverterFactory(GsonConverterFactory.creat())是在回调时能够使用自己定义的类型
接下来创建Api对象
Api api= retrofit.create(Api.class);
使用getUserWithPath方法
api.getUserWithPath.enqueue(newCallback() {
@Override
public voidonResponse(Call call,Response response) {
User user=response.body();
Log.i(TAG,"onResponse: "+user.getUser_name());
}
@Override
public voidonFailure(Call call,Throwable t) { }
});
使用loginWithJson方法(假设在登录时先获取用户的id,然后再获取用户的信息)
api.loginWithJson(newUserParam("asendi","123")).enqueue(newCallback() {
@Override
public voidonResponse(Call call,Response response) {
if(response.isSuccessful()) {
int id = response.body().getUser_id();
api.getUserInfoWithPath(id).enqueue(newCallback() {//获取用户的信息 @Override
public void onResponse(Call call,Response response) { User user = response.body();
Log.i("User","onResponse: "+ user.getUser_name() +":"+ user.getPsw());
}
@Override
public void onFailure(Call call,Throwable t) { }
});
}
}
@Override
public void onFailure(Call call,Throwable t) { }
});
使用Form表单方式则是直接传入对应的参数即可。