即使标头状态代码为200,Retrofit也会调用failure()方法

我正在使用改造进行后端通信,并在其下方使用我的改装电话的片段:

serverObject.createEvent(Utils.getAuthHeader(), params, new Callback() { @Override public void success(CreateEventResponse outputObj, retrofit.client.Response response) { Log.d(TAG, outputObj.getTitle() + " is successfully created."); setResult(Activity.RESULT_OK); finish(); } @Override public void failure(RetrofitError retrofitError) { //Header status code Log.e("failure", String.valueOf(retrofitError.getResponse().getStatus())); Log.e("failure", String.valueOf(retrofitError.getResponse().getBody())); } }); 

上面的代码在Logcat中打印出来:

 04-16 16:26:11.751 25131-25131/com.android.myapp.app E/failure﹕ 200 04-16 16:26:11.751 25131-25131/com.android.myapp.app E/failure﹕ null 

这有可能吗?

任何人都可以帮助为什么会发生这种情况。

我也设置了setLogLevel(RestAdapter.LogLevel.FULL); 所以我可以看到我的logcat中的每个值。 我的响应是从服务器正确的,但为什么失败()被调用?

请帮忙!

提前致谢。

可能改装会引发一个exception调用失败方法。 使用:

 retrofitError.getCause() 

或者做一些调试。 您使用CreateEventResponse注册回调,因此当body为null时,您可能已捕获解析exception。