Как вызвать веб-сервис .net, который возвращает ArrayList для Android - PullRequest
3 голосов
/ 11 июля 2011

Я пытаюсь получить ArrayList из веб-службы .NET с помощью ksoap.

Кажется, данные не могут войти в мои 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){}

Это необработанный вывод веб-службы:

<?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>

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

Я хотел бы предложить вам преобразовать этот ArrayList в массив String.Вы можете сослаться this

Вы также можете преобразовать свой ArrayList в строку в Android

Затем в код веб-службы на стороне сервера добавьтенекоторый разделитель, такой как "#", который будет отделять каждый отдельный элемент вашего ArrayList и сохранять его в строковом массиве.

На стороне Android вы можете вызвать веб-сервис следующим образом:

 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 голосов
/ 11 июля 2011

KSoap2 .Это должно помочь.

...