【问题标题】:Retrofit 2 Post response to different class改造 2 对不同班级的回复
【发布时间】:2016-08-15 00:08:18
【问题描述】:

我想将响应读取为自定义类,但我必须使用 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 以便能够读取响应值。

谢谢。

【问题讨论】:

    标签: android retrofit2 gson


    【解决方案1】:

    您可以使用 Response&lt;JsonElement&gt; 并将您的响应作为 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");
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 2021-03-06
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      相关资源
      最近更新 更多