2012-02-12 13 views
2

私は外部サーバからデータを取得するためにアプリケーション用にwebservicesを使用しています。私はサーバーに接続することができます、私のSOAP要求を送信し、私のアンドロイドクラスに戻ってSoapObjectとしてデータを取得することができます。 ここでは、このSoapObjectを解析して、Webサービスからの値(文字列として)を取得するのに問題があります。 私のコードはここにある:androidでSoapObjectを解析する方法

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list); 
     mInflater = (LayoutInflater)getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
     System.out.println("Entered "+getClass().getSimpleName()); 
     //Calling the web service to get the documents list 
     callService("getDocumentsList","http://wservice.friedmaggy.com/getDocumentsList"); 

- 私は別のBeanに全体の応答オブジェクトを渡している、上で見たよう - 私は、Webサービスを呼び出すために:

public void callService(String operation, String soapaction) 
    { 
     try { 
      String SOAP_ACTION = soapaction; 
      String OPERATION_NAME = operation; 
      String WSDL_TARGET_NAMESPACE = getString(R.string.targetNamespace); 
      String SOAP_ADDRESS = getString(R.string.soapAddress); 
      SoapObject request = new SoapObject(
        WSDL_TARGET_NAMESPACE, OPERATION_NAME); 
      System.out.println("SOAP_ACTION "+SOAP_ACTION); 
      System.out.println("OPERATION_NAME "+OPERATION_NAME); 
      System.out.println("WSDL_TARGET_NAMESPACE "+WSDL_TARGET_NAMESPACE); 
      System.out.println("SOAP_ADDRESS "+SOAP_ADDRESS); 
      // System.out.println("SOAP_ACTION "+SOAP_ACTION); 

      PropertyInfo propInfo = new PropertyInfo(); 

      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
        SoapEnvelope.VER11); 

      HttpTransportSE httpTransport = new HttpTransportSE(
        SOAP_ADDRESS); 
envelope.setOutputSoapObject(request); 

      httpTransport.call(SOAP_ACTION, envelope); 

      SoapObject response = (SoapObject) envelope.bodyIn; 


      if(response.getPropertyCount()>0){ 
       data=new StringBuilder(); 

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

       Course c = new Course((SoapObject) response.getProperty(i)); 

       courseList.add(c); 

      } 

    for (Course c : courseList) { 

       data.append("CourseName :" + c.getName()); 

       results.add(c.getName()); 
      } 

callServiceメソッドを作成しましたクラスを使用して値を取得することができます(コースc = new Course((SoapObject)response.getProperty(i));)

この応答オブジェクトを解析して、必要な文字列値を取り出す方法を教えてください。

答えて

0
androidHttpTransport.call(SOAP_ACTION, envelope); 
Object response = envelope.getResponse(); 

Vector<SoapObject> res= null; 

if (response instanceof SoapObject) { 
     res = new Vector(); 
    res.add((SoapObject) response); 
    } else if (response instanceof Vector) { 
      res = (Vector<SoapObject>) response; 
     } 

for(SoapObject so1: res){ 
      //retrieve String here from soap object using this 
        so1.getProperty(0).toString(); 
    //then so1.getProperty(1).toString and likewise  
     } 
+0

これがあなたに役立つことを願っています! –

関連する問題