Java okHttp不';不要取消执行
我正在使用: 安道尔工作室。 Okhttp 2.4.0和AsyncTask。但是我不能取消一个请求。 已通过wi-fi连接到服务器。若服务器关闭,那个么okHttp会继续尝试连接,我不能取消它。 超时正在工作,但我想在超时前取消Java okHttp不';不要取消执行,java,android,android-asynctask,okhttp,Java,Android,Android Asynctask,Okhttp,我正在使用: 安道尔工作室。 Okhttp 2.4.0和AsyncTask。但是我不能取消一个请求。 已通过wi-fi连接到服务器。若服务器关闭,那个么okHttp会继续尝试连接,我不能取消它。 超时正在工作,但我想在超时前取消 private OkHttpClient client = new OkHttpClient(); client.setConnectTimeout(30000, TimeUnit.MILLISECONDS); 执行之后,我在api中按下特殊的取消按钮
private OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(30000, TimeUnit.MILLISECONDS);
执行之后,我在api中按下特殊的取消按钮
public void onCancelClick(View v){
BaseApplication.getInstance().server.cancel();
synchProducts.cancel(true);
}
第一行必须停止okHttp,第二行必须停止类扩展异步任务
private static final String myTag = "AsyncCall";
public void cancel(){
client.cancel(myTag);
}
异步任务类中的背景
@Override
protected String doInBackground(Void... params) {
publishProgress(1);
String responseStr = sendProductHeaders();
//this performed after timeouts, and spit to my cancel okHttp
publishProgress(2);
if (responseStr != null && !isCancelled()){
ProductsList productsForSend = parseProducts(responseStr);
//correctly stoped thread
我没有忘记在生成器请求中使用.tag
public Response post(String url, String json) {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.tag(myTag)
.url(url)
.post(body)
.build();
return call(request);
}
“call”是我进行okHttp调用的方法
private Response call(Request request){
try {
return client.newCall(request).execute();
} catch (IOException e) {
Log.e("Aync call", "IO exception " + e.getMessage());
}
return null;
}
“Tags”为true,okHttp库中的代码realy激发call.cancel()
正在异步运行的方法
public void onRefreshProducts(View v){
progressLayout.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
synchProducts = new SynchProducts(activityCallBack);
synchProducts.execute();
}
“activityCallBack”是我从AsyncTask类调用活动时使用的接口
我不想使用okHttp排队,但我无法在我的应用程序中插入友好的进度条。
谢谢 尝试将库更新为
okhttp 2.5.0
,然后使用该方法。for 2.5.0提到以下内容:
取消通话更可靠。我们遇到一个错误,当应用程序使用Call.cancel()时,连接的套接字没有关闭
希望它能解决这个问题。尝试将库更新到
okhttp 2.5.0
并使用该方法。for 2.5.0提到以下内容:
取消通话更可靠。我们遇到一个错误,当应用程序使用Call.cancel()时,连接的套接字没有关闭
希望它能解决这个问题。@anivaler谢谢。更新了链接。@anivaler谢谢。更新了链接。
public void onRefreshProducts(View v){
progressLayout.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
synchProducts = new SynchProducts(activityCallBack);
synchProducts.execute();
}