2012-07-11 30 views
1

好吧,这里是我的问题:ksoap2 evelope.getResponse得到一个NullPointerException

我发送SOAP请求,我也得到一个有效的答案,一切都正常工作,我得到的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) 

错误是GETRESPONSE 内从ksoap2的来源:

/** * 来自肥皂调用的响应。从包装对象中取出对象并将其返回。 * * @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; 
} 

}

+0

你是怎样终于设法解决这个问题? – 2013-01-15 07:38:03

+0

我无法解决问题,所以我解析输出手动... – Kostronor 2013-01-15 11:35:14

回答

1

试试这个代替SoapObject

SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
+0

可悲的是,错误是在getRespose(),而不是在返回的对象。 由于第521行的错误(已编辑的文章) – Kostronor 2012-07-11 08:40:29

+0

没有任何返回,因此您检查了bodyin,SoapObject resultsRequestSOAP =(SoapObject)envelope.bodyIn; String response = result.getProperty(0).toString(); – 2012-07-11 08:43:21

+0

是的,这是一个空值 – Kostronor 2012-07-11 08:47:14

相关问题