3

ArrayListksoap を使用して .NET Web サービスから取得しようとしています。

my にデータが入らないようです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

KSoap2。それは役立つはずです。

于 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 に答える