2

こんにちは、私はしばらくグーグルを検索してきましたが、これについての確かな例がないようです。私はこの数日間、AndroidでWebサービスを使用してきましたが、Androidからパラメーターを正常に渡し、ksoapで問題なく使用することができます。しかし今、配列を Web サービスに渡す必要があります。私のサンプルWebサービスは次のとおりです。

[WebMethod]
public string Sample(string[] logs)
{
    return array[0];
}

これは、生成する必要がある XML です。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Sample xmlns="http://MTKAndroidService.org/">
      <array>
        <string>string</string>
        <string>string</string>
      </array>
    </Sample>
  </soap:Body>
</soap:Envelope>

私はしばらくこれで立ち往生しており、誰かが私を助けてくれることを願っています.

4

1 に答える 1

4

最後にそれを手に入れました....これで立ち往生している人のために、私の答えを投稿してください

public String Sample()
    { 
        String SOAP_ACTION = "http://MTKAndroidService.org/Sample";
        String METHOD_NAME = "Sample";
//      URL =  "http://10.0.2.2:49923/Service1.asmx";   // to be adjusted to the URL above once this code is added into WebService;
        String IP_LIST="";
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
        List<String> logs =  new ArrayList<String>();
        logs.add("hello");
        logs.add("world");
        SoapObject soapLogs = new SoapObject(NAMESPACE, "logs");
        for (String i : logs){
            soapLogs.addProperty("string", i);
        }
        request.addSoapObject(soapLogs);

        SoapSerializationEnvelope IPenvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        IPenvelope.dotNet = true;
        IPenvelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

            try 
            {
                androidHttpTransport.call(SOAP_ACTION, IPenvelope);
                SoapPrimitive response = (SoapPrimitive)IPenvelope.getResponse();
                Log.i("myApp", response.toString());
                IP_LIST= response.toString();
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
            return IP_LIST;
    }
于 2013-08-19T08:01:35.543 に答える