2012-07-11 61 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

相關問題