2013-11-27 23 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

相关问题