我想将响应作为自定义类读取,但我必须使用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以便能够读取响应值。
感谢。
答案 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");
}
});