我这样打电话:
ApiInterface.getKidMixClient(getActivity()).getAccountDetails().enqueue(LoginFragment.this);
这是我的interface
定义:
@GET(Endpoints.GET_MY_ACCOUNT_DETAILS+"/")
Call<Account> getAccountDetails();
但我的回调onResponse
永远不会被调用?
这个设置有问题吗?
public class ApiInterface {
private static ApiService apiInterface;
public static ApiService getKidMixClient(final Context context) {
if (apiInterface == null) {
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
String authToken = SharedPrefsManager.get(context).getAccessToken();
request.newBuilder()
.addHeader("Authorization", "Bearer " + authToken)
.addHeader("Content-Type", "application/json")
.build();
chain.proceed(request);
return intercept(chain);
}
});
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})
.create();
Retrofit restAdapter = new Retrofit.Builder()
.baseUrl(Endpoints.ENDPOINT_BASE_URL+Endpoints.ENDPOINT_VERSION)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
/* .setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
String authToken = SharedPrefsManager.get(context).getAccessToken();
request.addHeader("Authorization", "Bearer " + authToken);
request.addHeader("Content-Type", "application/json");
}
})*/
.build();
apiInterface = restAdapter.create(ApiService.class);
}
return apiInterface;
}
}
这是应该被调用的回调,但绝不是:
@Override
public void onResponse(Response<Account> response, Retrofit retrofit) {
Log.v("Call Success", "Call was a sucess to server login!");
Account account = response.body();
if(account != null && account.getUser() != null){
if(callbacks != null){
Log.d(TAG, "start");
callbacks.showDashboard(account.getUser());
Log.d(TAG, "finish");
}
}
}
它位于LoginFragment
类中,其中的初始调用是通过enqueue
进行的。