2016-08-15 9 views
0

私はカスタムクラスとしてレスポンスを読んでいますが、PostメソッドのパラメータとしてResponseBodyを使用する必要があります。Retrofit 2別のクラスへの応答

ポストインタフェース:

public interface IPostPhoneToken { 
@FormUrlEncoded 
@POST() 
Call<ResponseBody> postPhoneToken(
     @Field("data[UserPhoneToken][first_name]") String firstName, 
     ... 
     @Url String endpoint); 
} 

問題はここにある:

call.enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
      if(response.isSuccessful()){ 
      } 
      else{ 
       System.out.println(response.message()); 
      } 
     } 
     @Override 
     public void onFailure(Call<ResponseBody> call, Throwable t) { 
      System.out.println("Failed"); 
     } 
    }); 

私は応答値を読むことができるように異なるクラスでResponseBodyを変更したいです。

ありがとうございました。

答えて

1

Response<JsonElement>を使用して、あなたの応答としてJsonオブジェクトを取得し、その後、any jsonデシリアライザを使用してクラスに変換することができます。

call.enqueue(new Callback<JsonElement>() { 
    @Override 
    public void onResponse(Call<JsonElement> call, Response<JsonElement> response) { 
     if(response.isSuccessful()){ 
      JsonElement jsonElement = response.body(); 
      JsonObject objectWhichYouNeed = jsonElement.getAsJsonObject(); 

      //use any json deserializer to convert to your class. 
     } 
     else{ 
      System.out.println(response.message()); 
     } 
    } 
    @Override 
    public void onFailure(Call<JsonElement> call, Throwable t) { 
     System.out.println("Failed"); 
    } 
}); 
関連する問題