我正在尝试转换看起来像这样的简单响应
angular.module('test')
.service('Users', function($q, $http) {
var api = 'api';
var cached = [];
var localPromise;
var _getAll = function() {
if (localPromise) {
return localPromise;
}
var deferred = $q.defer();
if (cached.length > 0) {
deferred.resolve(cached);
localPromise = null;
return deferred.promise;
}
var url = api + '/users';
$http.get(url).then(function(data) {
cached = data.data;
deferred.resolve(cached);
localPromise = null;
}, function(err) {
deferred.reject(err);
localPromise = null;
});
localPromise = deferred.promise;
return deferred.promise;
}
return {
getAll: _getAll
}
});
我正在使用最新版本的Retrofit 2.0.0-beta1。我之前从未使用过Retrofit。有很多教程和旧版Retrofit的例子。我尝试了不同的技术,适用于旧版本,但不适用于最新版本。由于缺乏最新版Retrofit的文档,我找不到解决方案。
我想使用最新版本。
这是POJO
{
"field_one": "bearer",
"field_two": "fgh",
"field_three": 0
}
这是我正在使用的界面
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());
}
});
我想在Auth Object中获取稍后将使用的数据。
请建议我最佳解决方案
谢谢!
答案 0 :(得分:1)
我猜你没有看到你期望在这一行打印出你的对象 -
Log.d("Response", ">>> "+ response.toString());
这将在响应上调用toString
方法。如果要在反序列化对象上调用它,请先调用body()
方法 -
if(response.isSuccess()) {
Log.d("Response", ">>> "+ response.body().toString());
} else {
Log.d("Response", "Error - " + response.code())
}