如何调用返回ArrayList的.NET Web服务到Android

3

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

数据似乎无法进入我的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>

1
你能发布网络服务的原始输出吗? - ThatGuyInIT
这是 Web 服务的原始输出<?xml version="1.0" encoding="utf-8" ?>
  • <ArrayOfAnyType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://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>
- weejing
请问能否把receivedStrings接收到的值粘贴过来吗? - Shashank_Itmaster
2个回答

0
我建议你将那个ArrayList转换成一个String数组。你可以参考this 在Android中,你也可以将你的ArrayList转换成String 然后,在服务器端的Web服务代码中添加一些分隔符,如“#”,以分隔ArrayList的每个单独项并存储在一个String数组中。
在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; 

 }      

希望有所帮助


0

KSoap2。这应该会有所帮助。


是的,我正在使用KSOAP2调用Web服务。我目前正在尝试从Web服务中调用一系列数组。我试图将ArrayList的数据存储到变量coo中,但似乎无法存储数据。是否有关于KSOAP2的指南可供我参考? - weejing
http://www.helloandroid.com/tutorials/using-ksoap2-android-and-parsing-output-data - azharb
谢谢指南,是否有关于调用数组或ArrayList Web服务的指南? - weejing
我只是从谷歌搜索结果中发布了一些内容。在互联网上找找,实现我上面建议的代码,如果遇到困难,请发布你的代码和问题,有人会帮助你的。 - azharb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接