2016-08-15 2 views
0

사용자 정의 클래스로 응답을 읽고 싶지만 Response 메소드를 Post 메소드의 매개 변수로 사용해야합니다.개조 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"); 
    } 
});