如果互联网连接没有数据,AsyncHttpClient的回调方法



我使用Loopj来获取请求和响应。但似乎回调方法没有正确调用,如果没有数据的互联网连接。当我点击listview时,它执行下面的代码:

AsyncHttpClient client = new AsyncHttpClient();
            client.get("http://www.google.com", new AsyncHttpResponseHandler() {
                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                    System.out.println("onSuccess");
                }
                @Override
                public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                    System.out.println("onFailure");
                }
            });

问题是,如果互联网连接,但没有数据,那么onFailure()即使在超时设置后也不会调用。

我已经尝试在客户端使用以下超时设置:

client.setTimeout (5000),

client.setConnectTimeout (5000),

client.setResponseTimeout (5000),

client.setMaxRetriesAndTimeout (1000),

这些都不强制调用onFailure()。我的问题是有任何方法调用onFailure()如果互联网连接没有数据或任何其他回调可用的Loopj在超时后触发?

AsyncHttpClient还有其他的回调,最重要的是

    AsyncHttpClient client = new AsyncHttpClient();
    client.get("http://www.google.com", new AsyncHttpResponseHandler() {
        @Override
        public void onStart() {
            super.onStart();
        }
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
            System.out.println("onSuccess");
        }
        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
            System.out.println("onFailure");
        }
        @Override
        public void onFinish() {
            super.onFinish();
            System.out.println("onFinish");
        }
    });

在您的情况下,您可以使用onFinish()回调,它将给出wed请求的结束,即使它的成功或失败…

希望能有所帮助

最新更新