2015-10-16 40 views
0

我想從SOAPObject值獲取字符串,如下的Android了java.lang.RuntimeException:非法財物:當從SOAP對象(KSOAP2)

anyType{ 
     Message=anyType{}; 
     ErrorCode=NoError; 
     ImageStatus=anyType{ 
      ImageTicket=34320146-2035-461c-abd5-d0cba4ebdd37; 
      CustomerImageId=0584e8b766a4de2177f9ed11d1587f55-1; 
      ProductId=anyType{}; 
      StatusName=New images; 
      StatusId=10; 
      IsPaid=false; 
      ThumbnailImageURL=anyType{}; 
      FinalImagesURL=anyType{ 
       string=anyType{}; 
       }; 
     }; 
    }; 

而且我寫的代碼來獲取值

SoapObject resultBody = (SoapObject) soapEnvelope.bodyIn; 

for (int i = 0; i < resultBody.getPropertyCount(); i++) { 

    SoapObject body = (SoapObject) resultBody.getProperty(i); 

    customerImageId = body.getProperty("CustomerImageId").toString();// throwing exception 
    Constants.StatusId = body.getProperty("StatusId").toString(); 
    thumbnailImageURL = body.getProperty("ThumbnailImageURL").toString(); 
    isPaid = body.getProperty("IsPaid").toString(); 

} 

而且它給了我一個異常

了java.lang.RuntimeException:非法財物:CustomerImageId

任何人都可以幫助我嗎?

+1

*我想從SOAPObject得到的值,如下* ......那麼你必須開始思考......錯誤是顯而易見的...存儲在'body'中的對象沒有''CustomerImageId''屬性...現在分析你的代碼,以便知道爲什麼 – Selvin

+0

@Selvin你的評論非常有用。 –

回答

0

CustomerImageId,StatusId等是ImageStatus的子女,不是anyType的直接財產。因此通過ImageStatus的對象訪問這些。

0

感謝您的回覆@Selvin

我的最終代碼是

SoapObject resultBody = (SoapObject) soapEnvelope.bodyIn; 

SoapObject body = (SoapObject) resultBody.getProperty(0); 

SoapObject statusObject = (SoapObject) body.getProperty("ImageStatus");// added this 
customerImageId = body.getProperty("CustomerImageId").toString(); exception 
Constants.StatusId = body.getProperty("StatusId").toString(); 
thumbnailImageURL = body.getProperty("ThumbnailImageURL").toString(); 
isPaid = body.getProperty("IsPaid").toString(); 
+0

仍然,我認爲你應該刪除循環...並用簡單的get屬性'0'或名稱替換它''GetImageStatusResult'' – Selvin

+0

是的!編輯答案:) @Selvin –

+0

我想你必須使用statusObject而不是body,當你想獲得「CustomerImageId」,「StatusId」等的值時。 like customerImageId = statusObject .getProperty(「CustomerImageId」)。的toString(); //例外 選中此項 –