我正在使用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中可用的任何其他回调在超时后被解雇?
答案 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()
回调,即使成功或失败也会结束婚礼请求。
希望这有帮助