2013-11-27 25 views
2


我正在使用.Net Web Service從我的服務器中使用ksoap2從我的服務器獲取數據。
我可以使用以下代碼將數據提取到SoapObject
如何將SoapObject數據存儲到數組中?

public class MainActivity extends Activity { 
     private static final String _SOAP_ACTION = "http://tempuri.org/getUserDetails"; 
     private static final String _METHOD_NAME = "getUserDetails"; 
     private static final String _NAMESPACE = "http://tempuri.org/"; 
     private static final String _URL = "http://sush19.in/myservice/myservice.asmx"; 
     SoapObject _response; 

     public void getUserInfo() { 
      SoapObject request = new SoapObject(_NAMESPACE, _METHOD_NAME); 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet=true; 
      envelope.setOutputSoapObject(request); 
      try 
      { 
       AndroidHttpTransport aht=new AndroidHttpTransport(_URL); 
       aht.call(_SOAP_ACTION,envelope); 
       _response=(SoapObject)envelope.getResponse(); 
       String s1 = (String)_response.getProperty(0); 
       String s2 = (String)_response.getProperty(1); 
       String s3 = (String)_response.getProperty(2); 
       String s4 = (String)_response.getProperty(3); 
      } 
      catch (Exception ex) 
      { 
       ex.printStackTrace(); 
       Toast.makeText(getBaseContext(), "Oops..."+ex, Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

我可以通過使用上述_response.getProperty獲取每個值,什麼我得到的值是正確的
anyType{anyType=user1; anyType=pswd1; anyType=user2; anyType=pswd2; anyType=user3; anyType=pswd3; anyType=user4; anyType=pswd4; anyType=user5; anyType=pswd5; anyType=user6; anyType=pswd6; }
數據就是我取的用戶名和密碼。
我想將它存儲在一個數組中,以便進一步操作,例如將其存儲到Sqlite數據庫中。我的數據庫表有兩個列

username userPassword 

我想我在下面的格式上面的數據:

user1 pswd1 
user2 pswd2 
user3 pswd3 
user4 pswd4 
user5 pswd5 
user6 pswd6 

,這樣是會很容易找到與它們對應的密碼用戶名。我怎麼可以投SoapObjectArray

回答

0

我得到了我想要的東西解決什麼都,這要歸功於@Basbous我從代碼中的一些想法,你提供的..
最後我解決它通過添加以下代碼:

public class MainActivity extends Activity { 
     private static final String _SOAP_ACTION = "http://tempuri.org/getUserDetails"; 
     private static final String _METHOD_NAME = "getUserDetails"; 
     private static final String _NAMESPACE = "http://tempuri.org/"; 
     private static final String _URL = "http://sush19.in/myservice/myservice.asmx"; 
     SoapObject _response; 

     public Boolean getUserInfo() { 
      SoapObject request = new SoapObject(_NAMESPACE, _METHOD_NAME); 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet=true; 
      envelope.setOutputSoapObject(request); 
      try 
      { 
       AndroidHttpTransport aht=new AndroidHttpTransport(_URL); 
       aht.call(_SOAP_ACTION,envelope); 
       _response=(SoapObject)envelope.getResponse(); 
       int propertyCount = _response.getPropertyCount(); 
       String[][] userDetails = new String[propertyCount/2][2]; 
       int temp = 0; 
       if(propertyCount % 2 != 0) { 
        return false; 
       } 
       else 
       { 
        for(int i = 0 ; i < propertyCount/2 ; i++) 
        { 
         for(int j = 0; j < 2; j++) 
         { 
          userDetails[i][j] = (String)_response.getProperty(temp); 
          temp = temp + 1; 
         } 
        } 
       } 
       return true; 
      } 
      catch (Exception ex) 
      { 
       ex.printStackTrace(); 
       Toast.makeText(getBaseContext(), "Oops..."+ex, Toast.LENGTH_LONG).show(); 
       return false; 
      } 
     } 
    } 

這是我從我的服務器得到的值的列表現在存儲在二維數組userDetails[][],我可以把它傳遞給任何Activity並可以很容易地使用for loop訪問它。

0

第1步:創建一個bean類與您的.NET服務器返回 第2步:分析數據,並創建bean類的對象 第3步:添加到陣列 和做你想做的事

+0

感謝您的答覆,我是新到Android,所以我不明白你說什麼,但我已經解決它通過使用二維數組讓我的輸出。我已經張貼我的答案.. – Sush19

0
int propertyCount = _response.getPropertyCount(); 
if(propertyCount % 2 != 0) { 
// The response is not even so you have many option remove last count or return error 
} 
HashMap<String, String> map = new HashMap<String, String>(); 
for(int index = 0 ; intdex > propertyCount/2 ; index +=2) 
{ 
    map.put((String)_response.getProperty(index), (String)_response.getProperty(index + 1)); 
} 
+0

感謝您的回覆...我嘗試了您上面提供的代碼,但是我沒有得到如何從'map'獲取數據,我經歷了'HashMap',並且發現第一個字符串是'Key',其中第二個是'價值'。所以我從你的代碼中得到了一些想法,並且我用二維數組解決了它。我發佈了我的答案..謝謝... – Sush19

相關問題