将使用SOAP从(C#.net)Web服务接收的对象转换为Android中的String数组

时间:2012-07-24 10:09:54

标签: java android web-services object ksoap2

我正在尝试使用kSOAP2将字符串数组从Web服务发送到android应用程序。 使用kSOAP2,我在android端收到对象格式的响应。现在我想以String Array格式转换此对象,以便我可以将此数组直接传递给GridView。

我的网络服务方法如下:

[WebMethod]
public string[] getit(string status)
{
   string[] result;
   if (status == "blue")
      result = new string[] { "One", "Two", "Three", "Four" };
   else
      result = new string[] { "five", "six", "Seven", "Eight" };
   return result;
}

我的Android代码如下:

public void call(String status)
{
   try {    
       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

       request.addProperty("status",status.toString());

       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
       envelope.dotNet=true;
       envelope.setOutputSoapObject(request);

       HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
       androidHttpTransport.call(SOAP_ACTION, envelope);

       Object result = (Object)envelope.getResponse();

       array1=(String []) result;   //This statement does not work
   } 
}

在android代码中,array1是全局声明的字符串数组。 String array1 []; 我想将Object结果转换为array1 String数组。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

现在我想不出一个好榜样。您应该检查返回的对象。但我想这是一个内部属性为

的SoapObject
SoapObject result = (SoapObject)envelope.getResponse();

然后我想如果你打电话

String s = (String)result.getProperty(0);

您将获得返回数组的第一个元素。

而对于ofcource,你应该进行必要的错误处理。

答案 1 :(得分:0)

首先使用result.toString()打印“result”对象....并查看它返回的内容,之后它不会直接转换为字符串[],首先它应该转换为Object []数组。并且它将逐个转换为string []数组......所以你的代码应该像....

Object [] objArr =(Object [])result;

String [] strArr = new String [objArr.length];

for(int i = 0; i< = objArr.length; i ++)

{

  strArr[i]=objArr[i].toString();

}

这就是你能做到的......