3

我正在使用此代码通过 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();

在某些情况下,webservice 不会立即响应我的请求,并且应用程序正在排队等待androidHttpTransport.call(soapAction, envelope);并且用户想要取消请求。如何让用户取消该call方法?

4

1 回答 1

0

我希望您从后台线程而不是 UI/主线程调用此行。事实上,在 HC+ 上,由于 StrictMode,默认情况下应该会崩溃。

取消正在进行的网络呼叫可能会很棘手。您可能必须保留对连接本身的引用并shutdown()从主线程调用方法。但不能保证会立即调用取消。这将取决于连接本身的实现。

我假设您使用的是 kSOAP,我不确定它是否提供了一种cancel()机制。

另一种方法是等待第一次调用完成,然后再进行一次网络调用以撤消服务器上的操作。这将确保您的状态是同步的。

于 2012-08-13T05:18:58.263 回答