ksoap2 cast getResponse()

Max*_*xim 5 android web-services casting ksoap2

使用kso​​ap2 lib从android调用.net SOAP1.1 Web服务我遇到了对自定义对象进行强制响应的问题.例如,在httpTransport.call(soapAction,soapEnvelope)之后调用下面的代码是正确的.并在里面有数据.但我不能把它转移到SoapObject或Vector的特定对象,就像我在几个例子中看到的那样,我得到CastException或者什么都不简单.如果有人知道如何处理它,请帮助.

public StatusSetting[] GetAllStatuses(String installation){
    StatusSetting[] statuses = null;
    String methodName =  "GetAllStatuses";
    String soapAction = NAMESPACE + "/" + methodName;
    SoapObject request = new SoapObject(NAMESPACE, methodName);
    request.addProperty("installation", installation);

    SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    soapEnvelope.dotNet = true;
    soapEnvelope.setOutputSoapObject(request);

    AndroidHttpTransport httpTransport = new AndroidHttpTransport(SERVICE_URL);
    try {
        httpTransport.call(soapAction, soapEnvelope);
        statuses = (StatusSetting[])soapEnvelope.getResponse();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return statuses;
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*nta 5

首先尝试看看你是否得到任何回应.

Object obj = envelope.bodyIn; 
Run Code Online (Sandbox Code Playgroud)

如果这obj不是null,请尝试以下操作.

SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果你得到一些回应,这应该有用.

您需要告诉kSOAP什么是StatusSetting对象how,并将SOAP响应转换为StatusSetting对象.