【问题标题】:Write a python Client to pass xs:anyType argument to a webservice method in Java编写一个 python 客户端将 xs:anyType 参数传递给 Java 中的 webservice 方法
【发布时间】:2011-03-21 07:41:55
【问题描述】:

我写了一个小的 webservice[Axis2/Java],它暴露了一个方法


   public String Fill(String cacheName Object... varArgs) {


      return "Sample return "+varArgs[0].toString()+" "+(new Integer(varArgs[1]));

   }

我的客户是 python suds 客户。

import suds; import suds.client; url="http://localhost:8989/pakg1/services/JavaCache?wsdl" client=suds.client.Client(url) print client.service.Fill("level1,"Immediate",123123);

WSDL 显示元素 varArgs 如下。


   xs:element maxOccurs="unbounded" minOccurs="0" name="varArgs" nillable="true" type="xs:anyType"

但是,在运行时 Object 数组中没有任何内容。当我尝试在调试模式下查看数组时,它显示它为空。

请建议我如何将参数传递给 Fill 方法,以便我可以在 varArgs 参数中发送一个数组或单个基本类型。

谢谢, 达瓦尔。

【问题讨论】:

    标签: java python web-services axis2 suds


    【解决方案1】:

    您是否尝试过将 varArgs 作为 python 列表传递?看看这样的事情是否有效:

    client.service.Fill("level1",["Immediate",123123])
    

    【讨论】:

    • 在此处添加更多信息。当我按照您建议的方式进行操作时,服务方法 Fill 在 varArgs 中接收数据处理程序的 Object 数组。有什么建议吗??
    【解决方案2】:

    问题出在axis2端。 Axis2 无法反序列化 Object 并将其误认为是 DataHandler。我决定将我的对象作为 OMElement 传递,然后反序列化自己。

    还报告了 Axis2 的问题。

    谢谢

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2013-10-04
      • 1970-01-01
      • 2016-11-04
      • 2011-07-23
      • 2016-06-16
      相关资源
      最近更新 更多