改造2.0 POST请求
答
onResponse
被调用后,请求完成。你不会以这种相反的顺序要求用户的输入(除非你正在做多个请求或链接它们)。所以你应该已经有用户输入PRIOR来完成改造请求。
所以你onResponse回调是你处理HTTP响应:
@Override
public void onResponse(Call<List<Card>> call, Response<List<Card>> response) {
processResponse(response.body());
}
但是你发送的请求之前(和接收响应),就可以将表单数据添加到您的POST要求,你可以这样做:
@POST("/api/Cards")
Call<List<Card>> createCards(@Body List<Card> cards,
// Sort the cards using a query string param
@Query("sort") String contractAccount),
// Set a group id parameter as the replacement block
@Path("id") int groupId);
+0
你能解释一下吗?@Igor Ganapolsky – Ghost
答
为POST方法你必须在接口来使用@Body标签
@POST("/api/Cards")
Call<List<Card>> createCards(@Body List<Card> cards);
和你在哪里调用`createCards()`从活动
Card card=new Card();
card.setId(20);
card.setTitle("New Cards");
card.setMessage("New Launched cards");
List<Card> cards=new List<Card>();
cards.add(card);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create())
.build();
RequestApi requestApi = retrofit.create(RequestApi.class);
mCardsRequest = requestApi.createCards(cards);
mCardsRequest.enqueue(new Callback<List<Card>>() {
@Override
public void onResponse(Call<List<Card>> call, Response<List<Card>> response) {
** what should I add here to post data **
}
@Override
public void onFailure(Call<List<Card>> call, Throwable t) {
//
}
});
打电话? –
您可能希望将'postCards''移动到Loader对象中,因为您的响应可能会到达较旧的活动实例,并在正在处理时导致内存泄漏。 – Machinarius