如何取消ksoap2中的soap呼叫?

时间:2012-06-16 12:12:19

标签: 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);行等待,并且用户想要取消请求。如何让用户取消call方法?

1 个答案:

答案 0 :(得分:0)

我希望你从后台线程调用这一行而不是UI /主线程。实际上在HC +上,由于StrictMode,它应该默认崩溃。

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

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

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