1

わかりました、ここに私の問題があります:

soap-Request を送信すると、有効な回答が得られます。すべてが正しく機能しており、responsedump 内に有効な出力が得られます。ただし、次の場所で evelope.getResponse() を呼び出します。

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);        
//adding parameters
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.setAddAdornments(false);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject so = (SoapObject) envelope.getResponse();

この例外をスローします:

Caused by: java.lang.NullPointerException
at org.ksoap2.serialization.SoapSerializationEnvelope.getResponse(SoapSerializationEnvelope.java:521)

エラーは、ksoap2 のソースからの getResponse 内にあります。

/** * ソープ コールからの応答。ラッパー オブジェクトからオブジェクトをプルして返します。* * @since 2.0.3 * @soap 呼び出しからの応答。* @throws SoapFault */

public Object getResponse() throws SoapFault {
    if (bodyIn instanceof SoapFault) {
        throw (SoapFault) bodyIn;
    }
    KvmSerializable ks = (KvmSerializable) bodyIn; <-- Line 521

if (ks.getPropertyCount()==0) {
    return null;
} else if(ks.getPropertyCount()==1) {
    return ks.getProperty(0);
} else {
    Vector ret = new Vector();
    for(int i=0;i<ks.getPropertyCount();i++){
        ret.add(ks.getProperty(i));
    }
    return ret;
}

}

4

1 に答える 1

1

SoapObject の代わりにこれを試してください

 SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
于 2012-07-11T08:17:06.197 に答える