您好我正在尝试使用Retrofit 2.0实现Post请求
我的问题是show我应该写onResponse以便通过从用户那里获取数据或手动获取数据。
谢谢
答案 0 :(得分:1)
对于post方法,你必须在接口
中使用@Body标签@POST("/api/Cards")
Call<List<Card>> createCards(@Body List<Card> cards);
并从活动中调用
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) {
//
}
});
答案 1 :(得分:0)
onResponse
。您不会以相反的顺序询问用户的输入(除非您正在执行多个请求或链接它们)。因此,您应该已经有用户输入PRIOR来进行Retrofit请求。
因此您的 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);