我正在尝试转换看起来像这样的简单响应
{
"field_one": "bearer",
"field_two": "fgh",
"field_three": 0
}
我使用的是最新版本的 Retrofit 2.0.0-beta1。我以前从未使用过 Retrofit。有很多旧版本 Retrofit 的教程和示例。我尝试了适用于旧版本但不适用于最新版本的不同技术。由于缺少最新版 Retrofit 的文档,我找不到解决方案。
我想使用最新版本。
这是POJO
public class Auth {
@SerializedName("field_one")
@Expose
private String fieldOne;
@SerializedName("field_two")
@Expose
private String fieldTwo;
@SerializedName("field_three")
@Expose
private Integer fieldThree;
// setter and getter etc. etc.
}
这是我正在使用的界面
interface Authorization {
@Headers("Authorization: This is some header")
@GET("api/v1/mytoken")
Call<Auth> getToken();
}
这是我调用服务的方式
OkHttpClient client = new OkHttpClient();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://myendpoint.com/")
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
Authorization serviceAuthorization = retrofit.create(Authorization.class);
serviceAuthorization.getToken().enqueue(new Callback<Auth>() {
@Override
public void onResponse(Response<Auth> response) {
Log.d("Response", ">>> "+ response.toString());
}
@Override
public void onFailure(Throwable t) {
Log.d("fail", ">>> "+ t.getMessage());
}
});
我无法获得输出。它只是打印这个
Response: >>> retrofit.Response@2567e2c3
我想获取 Auth Object 中的数据,稍后会用到。
请建议我最好的解决方案
谢谢!
最佳答案
我猜你没有看到你期望看到你的对象打印在这一行上——
Log.d("Response", ">>> "+ response.toString());
这将在响应中调用 toString
方法。如果您想在反序列化对象上调用它,请调用 body()
方法先——
if(response.isSuccess()) {
Log.d("Response", ">>> "+ response.body().toString());
} else {
Log.d("Response", "Error - " + response.code())
}
关于android - 如何在 Retrofit 2.0.0 beta 1 中获取简单的 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32706354/