1

我正在使用 Loopj 的 AsyncHttpClient 对 JSON 数据进行 http 请求。现在我需要获取从服务器返回的 http 错误代码。我在哪里可以找到那个?我传递的处理程序如下所示:

new JsonHttpResponseHandler()
{
    @Override
    public void onFailure(Throwable throwable, JSONObject object)
    {
        // Get error code
    }
}

这根本不可能吗?

4

2 回答 2

5

尝试这个:

HttpResponseException hre = (HttpResponseException) throwable;
int statusCode = hre.getStatusCode();

它应该只适用于状态代码> = 300,因为loopj中的AysncHttpResponseHandler类中有以下代码

if(status.getStatusCode() >= 300) {
     sendFailureMessage(new HttpResponseException(status.getStatusCode(), status.getReasonPhrase()), responseBody);
}
于 2013-07-10T19:34:16.840 回答
0

看一下client.post(null, url, entity, "application/json", responseHandler);

如下声明方法,您将获得状态码

RestClientAvaal.post(url, entity, new BaseJsonHttpResponseHandler<>() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, String rawJsonResponse, Object response) {

            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, String rawJsonData, Object errorResponse) {

            }

            @Override
            protected Object parseResponse(String rawJsonData, boolean isFailure) throws Throwable {
                return null;
            }
        });

如果您想获取异常消息,请在 onFailure 方法中尝试new Exception(throwable).getMessage()

于 2015-12-29T10:17:07.370 回答