2016-04-03 130 views
1

你好,我想实现利用改造2.0改造2.0 POST请求

我的问题后要求就是展示我应该在onResponse写,从而通过采取从用户或手动输入获取数据。

谢谢

+0

打电话? –

+0

您可能希望将'postCards''移动到Loader对象中,因为您的响应可能会到达较旧的活动实例,并在正在处理时导致内存泄漏。 – Machinarius

回答

0

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

1

为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) { 
      // 
     } 
    }); 
+0

不行@sushil库马尔 – Ghost

+0

把Log.d(“tags”,t.toString);在onFailure方法中,并告诉我错误 – sushildlh