1

我需要将一个字符串数组传递给一个预定义的网络服务,该网络服务旨在接受一个字符串值数组。但是,当我创建一个肥皂信封并将array.classstring.class属性设置为请求时,它会引发一个序列化错误

对上述有什么建议吗?建议的数据类型或方法应该是什么?

 SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);

    PropertyInfo p1 = new PropertyInfo();
    p1.setName("items");
    p1.setValue(results);
    p1.setType(String.class); // else Array.class.
    request.addProperty(p1);

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

        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
        httpTransport.debug = true;
        httpTransport.call(SOAP_ACTION, envelope);
                       // throws an error in the above.

        result = httpTransport.responseDump;
4

2 回答 2

2

这是 KSOAP2 for Android 库的一个已知问题,目前它根本不支持数组。问题描述在这里

可以在此处找到第三方补丁、解决方案和示例。

查看这些链接,您可以找到答案。

于 2013-05-15T06:08:04.367 回答
0

只需在循环中像这样传递参数名称和值:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE ht = new HttpTransportSE(URL);
for (int i=0; i<itemId.length; i++){
    request.addProperty("itemID",itemId[i]);
}
ht.call(SOAP_ACTION, envelope);

只需使用 request.addProperty 在循环中传递参数名和项目值

于 2014-02-05T12:39:37.603 回答