我正在使用这段代码通过 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);
行,用户想要取消请求。如何让用户取消调用
方法?
最佳答案
我希望您从后台线程而不是 UI/主线程调用此行。事实上,在 HC+ 上,由于 StrictMode,这应该默认崩溃。
在网络调用正在进行时取消网络调用可能很棘手。您可能必须保留对连接本身的引用并从主线程调用 shutdown()
方法。但是,不能保证会立即调用取消。这将取决于连接本身的实现。
我假设您正在使用 kSOAP,我不确定它是否提供了 cancel()
机制。
另一种方法是等待第一个调用完成,然后进行另一个网络调用以撤消服务器上的操作。这将确保您的状态同步。
关于android - 如何取消 ksoap2 中的 soap 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11063297/