2016-08-15 40 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"); 
    } 
}); 
相关问题