Android 如何取消ksoap2中的soap调用?

Android 如何取消ksoap2中的soap调用?,android,ksoap2,httptransportse,Android,Ksoap2,Httptransportse,我使用以下代码通过ksoap2调用webservice方法: SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransp

我使用以下代码通过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不会立即响应我的请求,应用程序正在等待调用(soapAction,信封)并且用户希望取消请求。如何让用户取消调用方法?

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

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

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

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