android - 如何取消 ksoap2 中的 soap 调用?

标签 android ksoap2 httptransportse

我正在使用这段代码通过 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/

相关文章:

java - 如何为: `google-client spreadsheet api` ?设置超时

java.lang.NullPointerException : println needs a message soap 异常

android - HTML CSS 文本的最后一个字符开始一个新行

java - 非SDK接口(interface)访问隐藏方法logcat警告和限制

android - 从 SoapObject (kSOAP2) 获取 boolean 值

android - 无法在代码中导入gradle库,尽管它出现在我的外部库列表中

android - 带有标签的 AndEngine 菜单项

android - 以编程方式设置渐变背景

android - 比较在 Android 中使用 SHA-1 生成的两个哈希字符串