【问题标题】:How to pass a String array to a webservice using soap libraries?如何使用肥皂库将字符串数组传递给 Web 服务?
【发布时间】:2013-05-15 04:37:06
【问题描述】:

我需要将一个字符串数组传递给一个预定义的网络服务,该网络服务旨在接受一个字符串值数组。但是,当我创建一个肥皂信封并将 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;

【问题讨论】:

  • 为什么要传递数组?
  • 看看这个例子:oguzozkeroglu.com/…
  • @SagarMaiyad,这是什么问题?我想,因为我不得不这样做。
  • @Raghunandan,这与我正在寻找的最接近,如果您在答案中提出相同的意见,我可以给您一个有用的支持,谢谢!

标签: android web-services xml-serialization android-ksoap2 arrays


【解决方案1】:

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

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

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

【讨论】:

【解决方案2】:

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

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 在循环中传递参数名和项目值

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2022-08-17
    • 1970-01-01
    相关资源
    最近更新 更多