前不久刚刚学习了Retrofit的GET请求Retrofit2.0之GET请求,今天又大致学习了一下POST请求,记录一下学习历程,在GET请求的基础上。
在接口NewsApi中增加post请求的方法:
@POST("toutiao/index?key=a2924a746f129e1f4b37d81dc5fea156")
Call<NewsBean> getDataByPost(@Body ApiBean aPiBean);
ApiBean是什么东东?其实就是Body的JavaBean,因为我这里只有一个type参数,所以比较简单:
public class ApiBean {
public String type;
}
其余的和GET请求一致了:
//通过Retrofit创建接口对象
NewsApi newsApi = retrofit.create(NewsApi.class);
ApiBean apiBean = new ApiBean();
apiBean.type="top";
mCall = newsApi.getDataByPost(apiBean);
mCall.enqueue(new Callback<NewsBean>() {
@Override
public void onResponse(Call<NewsBean> call, Response<NewsBean> response) {
LogUtils.LogUtil("size="+response.body().result.data.size());
}
@Override
public void onFailure(Call<NewsBean> call, Throwable t) {
}
});
}
如果你想取消请求,可以的:
mCall.cancel();
Retrofit也提供了同步请求的方法,不过Android是不允许在mainThread进行耗时操作的了:
mCall.execute();