我使用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请求的结束,即使它的成功或失败…
希望能有所帮助