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

时间:2016-09-03 06:25:57

标签: android loopj asynchttpclient

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

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(5,1000);

这些都没有强制调用onFailure()。我的问题是有没有办法调用onFailure()如果没有数据的网络连接或Loopj中可用的任何其他回调在超时后被解雇?

1 个答案:

答案 0 :(得分:0)

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()回调,即使成功或失败也会结束婚礼请求。

希望这有帮助