取消同步多部分请求

时间:2014-07-31 13:08:01

标签: loopj

我需要使用loopj从AsyncTask发送多部分发布请求,因此我被迫使用SyncHttpClient。

阅读源代码注释,我知道从同步请求的post方法返回的请求句柄不能用于取消请求,因为它在返回时已经完成(这是有意义的)。看起来像是一个捕获22。

是否有其他方法可以取消当前正在运行的同步请求? 是否可以使用SyncHttpClient.cancelAllRequests(true);来自UI线程? 那么,来自UI线程的SyncHttpClient.cancelAllRequests(true)不起作用。这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

如果您希望能够取消正在运行的请求,请确保您可以使用AsyncHttpRequest。如果从另一个线程甚至AsyncTask运行异步http请求并不重要,您只需确保在主线程上调用AsyncHttpRequest即可。你可以通过使用

强制它进入主线程来轻松完成
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable myRunnable = new Runnable() {
  public void run() {
// run your AsyncHttpRequest in here. 
// Since it is called from the main thread it will run asynchronously
// and therefore it can be cancelled easily by calling client.cancelAllRequests(true) 
  }
};
mainHandler.post(myRunnable);