【问题标题】:invoking JAX-WS web service with array param using GET使用 GET 使用数组参数调用 JAX-WS Web 服务
【发布时间】:2011-12-16 19:45:46
【问题描述】:

我有一个名为“diagnosticPing”的 CXF JAX-WS Web 服务操作,它接受两个参数,一个 int 和一个 String[] 数组。来自wsdl:

<xs:element name="depth" type="xs:int"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="instructions" type="xs:string"/>

我想尝试直接从浏览器调用此操作,因为这将是一种有用的方法来“ping”服务,而无需像 SoapUI 这样的工具。但是,我不知道如何构造我的查询字符串,以便服务能够识别 String[] 数组参数。我最好的尝试是这样的:

https://hostname/ServiceUri/service/diagnosticPing?depth=2&instructions=%22accountType%3DABC%22,%22action%3DgetDetails%22,%22version%3D1.0%22}

但我收到如下错误:

调用公共 java.util.List 时参数类型不匹配 ca.gwl.group.account.service.routing.AccountServiceRouter.diagnosticPing(int,java.lang.String[]) 带参数 [2, {"accountType=ABC","action=getDetails","version=1.0"} ].

有谁知道如何使用将被接受为字符串数组的查询字符串参数调用 Web 服务?

【问题讨论】:

  • 请注意,它只是一个一维字符串数组,即 java.lang.String[]

标签: java web-services jax-ws cxf


【解决方案1】:

看起来没有办法。想看的话,可以深入CXF URIMappingInterceptor。里面有个方法叫:

私有对象读取类型(字符串值,类类型)

需要更新以处理集合和数组。欢迎使用补丁。

:-)

【讨论】:

  • 是否也可以通过创建自定义拦截器并将其插入到链中的必要点来完成?这可能是在我的业务应用程序中包含和测试此功能而无需修补 CXF 的好方法,尽管我很乐意在之后贡献补丁。但我不确定自定义拦截器在解决这个问题上的可行性(仅使用 CXF 完成基本工作)。
猜你喜欢
  • 2011-06-24
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2012-08-09
相关资源
最近更新 更多