Retrofit 2发布对不同班级的回复

时间:2016-08-15 00:08:18

标签: android retrofit2 gson

我想将响应作为自定义类读取,但我必须使用ResponseBody作为Post方法中的参数。

发布界面:

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");
        }
    });

我想用不同的Class更改ResponseBody以便能够读取响应值。

感谢。

1 个答案:

答案 0 :(得分: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");
    }
});