需要帮助来显示来自webservice的SOAP请求的返回

时间:2011-02-11 14:07:17

标签: java android object soap

我尝试制作我的第一个Android应用程序! 我用ksoap2调用web服务来获取我的帐户的详细信息。 我有一个函数返回一个Array(resultRequestSOAP)。 在resultRequestSOAP中有一个ARRAY对象。 在我的功能下面:

    public Array listall(String session){
    final String SOAP_ACTION = "http://www.nubio.net/soap/vps#listAll";
    final String METHOD_NAME = "listAll";
    final String NAMESPACE = "http://www.nubio.net/soap/vps";
    final String URL = "http://www.nubio.net/soap/vps";
    Array myArray = null;
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    //SoapObject 
    request.addProperty("session",session);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    try 
        {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            resultRequestSOAP =  envelope.getResponse();
            //retour = resultRequestSOAP.toString();
            if(resultRequestSOAP != null){
               myArray = (Array)resultRequestSOAP; 
            }
        }
    catch (Exception aE)
        {
    aE.printStackTrace ();;
        }
    return myArray;

}

我测试函数返回字符串,它工作正常,但我需要在屏幕上显示数组。 如何在resultRequestSOAP中显示数组; ? 但是resultRequestSOAP中原来的soap返回;是:

array(
   0 => Object{
     vps_id      : int
     ip          : string
     hostname    : string
     password    : string (optional)
     os          : string
     os_arch     : integer
     os_distri   : string
     expire      : string (DATE TIME)
   },
   ...
)

所以我可以从肥皂中返回数组并显示它!? 对不起我的英语,我希望你能帮助我:) 对我来说最好只显示数组中的“主机名字符串”,因为按钮是否可能?

2 个答案:

答案 0 :(得分:0)

不确定你的要求,但是如果你的方法返回一个对象数组,你可以像这样打印出这个对象:

 for(int i=0; i < myArray.length; i++){
       Object item = myArray[i];
      // Put into a TextView here if you wish, just printing to console
      System.out.println("Item: "+i +" IP: "+item.ip);
      // or if it is private with a getter
      System.out.println("Item: "+i +" IP: "+item.getIp());

      System.out.println("Hostname: "+item.hostname);

      System.out.println("Hostname: "+item.getHostname());
 }

我认为无论如何这给了你一个想法?

答案 1 :(得分:0)

此博文可能有所帮助:http://seesharpgears.blogspot.com/2010/10/web-service-that-returns-array-of.html

查看最后一种方法。

编辑:

而不是强制转换为resultRequestSOAP数组,您应该获得resultRequestSOAP.getPropertyCount()的属性数,并循环显示每个对象:

SoapObject pii = (SoapObject)resultRequestSOAP.getProperty(i);

从这些对象中,您可以使用以下命令提取自己的属性(vps_id,ip,hostname ...):

vps_id = Integer.parseInt(pii.getProperty(0).toString());

等等。在示例中,他们正在构建Category对象的数组,但当然您可以使用您想要的数据。