我正在尝试通过android应用程序中的改造连接到Rest服务。我正在得到回应。但是,当服务有一些错误响应时,就会发生转换异常,现在我想根据响应主体执行一些操作。但是我得到的响应主体为NULL。但是改造日志中有一条错误消息。为什么会这样。
D/Reftofit log(24856): OkHttp-Received-Millis: 1397527055676 D/Reftofit log(24856): OkHttp-Response-Source: NETWORK 200 D/Reftofit log(24856): OkHttp-Sent-Millis: 1397527055492 D/Reftofit log(24856): Server: Apache/2.2.22 (Ubuntu) D/Reftofit log(24856): X-Powered-By: PHP/5.3.10-1ubuntu3.10 D/Reftofit log(24856): {"result":"Invalid Token ID"}
码:
public void failure(RetrofitError retrofitError) { String response = null; TokenError tokenError = (TokenError) retrofitError.getBodyAs(TokenError.class); response = tokenError.getErrorDetails(); Log.e(TAG, response); if (response != null && response.contains("Invalid Token ID")) { GroupDataProvider.getInstance().onFailure(); } }
在这里,我得到tokenError的null。不知道为什么 我是否需要使用rest适配器进行设置,以便将响应传递到改造错误对象。
tokenError
null
试试这个代码:
@Override public void failure(RetrofitError error) { String json = new String(((TypedByteArray)error.getResponse().getBody()).getBytes()); Log.v("failure", json.toString()); }
与 Retrofit 2.0
@Override public void onFailure(Call<Example> call, Throwable t) { String message = t.getMessage(); Log.d("failure", message); }