3

我正在尝试ArrayList使用 ksoap 从 .NET Web 服务中检索一个。

数据似乎无法进入我的coo arraylist.

如何解决?我的代码有什么问题吗?

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    SoapSerializationEnvelope envelope =
    new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    ArrayList <String> coo = new ArrayList <String>();

    try{
        androidHttpTransport.call(bustop_SOAP_ACTION, envelope);

        java.util.Vector<Object> receivedStrings = (java.util.Vector<Object>)envelope.getResponse();
        if(receivedStrings !=null)
        {
            for(Object curStrings : receivedStrings)
            {
                coo.add(curStrings.toString());
            }
        }
    }
    catch(Exception e){}

这是 Web 服务的原始输出:

<?xml version="1.0" encoding="utf-8" ?>
   <ArrayOfAnyType xmlns:xsi="w3.org/2001/XMLSchema-instance"; xmlns:xsd="w3.org/2001/XMLSchema"; xmlns="FYPJWebService.com">;
      <anyType xsi:type="xsd:string">1.278217,103.837517</anyType>
      <anyType xsi:type="xsd:string">1.278300,103.837705</anyType>
      <anyType xsi:type="xsd:string">1.281510,103.840888</anyType>
      <anyType xsi:type="xsd:string">1.285616,103.844446</anyType>
   </ArrayOfAnyType>
4

2 回答 2

0

肥皂水2。那应该有帮助。

于 2011-07-11T03:35:47.387 回答
0

我建议您将该 ArrayList 转换为 String 数组。你可以参考这个

您还可以在 Android 中将ArrayList 转换为 String

然后在服务器端的 Web 服务代码中添加一些分隔符,如“#”,它将分隔 ArrayList 的每个单独项目并存储在字符串数组中。

在 Android 端,您可以像这样调用 Web 服务:

 public String[] call()
 {
    SoapPrimitive responsesData = null; 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

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

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    androidHttpTransport.debug = true; 

    try {

    androidHttpTransport.call(SOAP_ACTION, envelope);

    responsesData = (SoapPrimitive) envelope.getResponse(); 
    System.out.println(" --- response ---- " + responsesData); 

    } catch (SocketException ex) { 
    ex.printStackTrace(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

    System.out.println( " ----" + responsesData );

    String serviceResponse= responsesData .toString(); 


    String[] temp; 
    String delimiter = "#"; 
    temp= serviceResponse.split(delimiter);
    System.out.println( " ---- length ---- " + temp.length); 

    return temp; 

 }      

希望有帮助

于 2011-11-24T04:11:35.490 回答