Android 如何将SoapObject数据存储到数组?

Android 如何将SoapObject数据存储到数组?,android,arrays,sqlite,Android,Arrays,Sqlite,我正在使用.Net Web服务从Android中的服务器获取数据,使用ksoap2 我能够使用以下代码将数据提取到SoapObject。 public class MainActivity extends Activity { private static final String _SOAP_ACTION = "http://tempuri.org/getUserDetails"; private static final String _METHOD_


我正在使用.Net Web服务从Android中的服务器获取数据,使用
ksoap2

我能够使用以下代码将数据提取到
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();
            }
        }
    }
我可以使用上面的
\u 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 DB中。我的数据库表有两列,如

username    userPassword
我希望我的上述数据采用以下格式:

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

这样就很容易找到用户名和相应的密码。如何将
SoapObject
强制转换为
数组

步骤1:创建一个与.net服务器返回的bean类相同的bean类 步骤2:解析数据并创建该bean类的对象 步骤3:添加到数组中 然后做任何你想做的事情

int-propertyCount=\u response.getPropertyCount();
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));
}
如果(属性计数%2!=0){ //响应不是偶数,因此您有许多选项删除上次计数或返回错误 } HashMap=newHashMap(); 对于(int index=0;intdex>propertyCount/2;index+=2) { map.put((String)\u response.getProperty(index),(String)\u response.getProperty(index+1)); }
多亏了
@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;
            }
        }
    }
公共类MainActivity扩展活动{
私有静态最终字符串_SOAP_ACTION=”http://tempuri.org/getUserDetails";
私有静态最终字符串\u方法\u NAME=“getUserDetails”;
私有静态最终字符串_命名空间=”http://tempuri.org/";
私有静态最终字符串_URL=”http://sush19.in/myservice/myservice.asmx";
SoapObject\u响应;
公共布尔getUserInfo(){
SoapObject请求=新的SoapObject(\u名称空间,\u方法\u名称);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(请求);
尝试
{
AndroidHttpTransport aht=新的AndroidHttpTransport(_URL);
aht.呼叫(_SOAP_ACTION,信封);
_response=(SoapObject)envelope.getResponse();
int propertyCount=_response.getPropertyCount();
字符串[][]用户详细信息=新字符串[propertyCount/2][2];
内部温度=0;
如果(属性计数%2!=0){
返回false;
}
其他的
{
对于(int i=0;i

我从服务器获得的值列表现在存储在2D数组中
userDetails[][][]
,我可以将其传递给任何
活动
,并可以使用
for loop
轻松访问它。

感谢您的回复。。。我尝试了您上面提供的代码,但我不知道如何从
map
获取数据,我查看了
HashMap
,发现第一个字符串是
Key
,第二个字符串是
value
。所以我从你的代码中得到了一些想法,我用2D数组解决了它。。我已经把我的答案贴出来了。。谢谢你…谢谢你的回复,我是android新手,所以我不明白你说了什么,但我已经解决了这个问题,通过使用2D数组获得了我的输出。。我已经把我的答案贴出来了。。