我使用此代码通过ksoap2调用webservice方法:
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(url,
TimeOutInSeconds * 1000);
try {
androidHttpTransport.call(soapAction, envelope);
} catch (Exception e) {
}
SoapObject so = (SoapObject) envelope.getResponse();
在某些情况下,webserivce不会立即响应我的请求,并且应用程序在第androidHttpTransport.call(soapAction, envelope);
行等待,并且用户想要取消请求。如何让用户取消call
方法?
答案 0 :(得分:0)
我希望你从后台线程调用这一行而不是UI /主线程。实际上在HC +上,由于StrictMode,它应该默认崩溃。
在网络呼叫正在进行时取消可能会非常棘手。您可能必须保持对连接本身的引用,并从主线程调用shutdown()
方法。不能保证会立即调用取消。它将取决于连接本身的实现。
我假设您使用的是kSOAP,我不确定它是否提供cancel()
机制。
另一种方法是等待第一个呼叫完成,然后再进行一次网络呼叫以撤消服务器上的操作。这将确保您的州处于同步状态。