改造后2.0请求

时间:2016-04-03 16:23:46

标签: android api retrofit2

您好我正在尝试使用Retrofit 2.0实现Post请求

我的问题是show我应该写onResponse以便通过从用户那里获取数据或手动获取数据。

谢谢

2 个答案:

答案 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);