前不久剛剛學習了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();