java - 使用 GET 调用带有数组参数的 JAX-WS Web 服务

标签 java web-services jax-ws cxf

我有一个名为“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"/>

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

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

但是我收到了这样的错误:

argument type mismatch while invoking public java.util.List ca.gwl.group.account.service.routing.AccountServiceRouter.diagnosticPing(int,java.lang.String[]) with params [2, {"accountType=ABC","action=getDetails","version=1.0"}].

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

最佳答案

看起来没有办法。如果您想查看它,可以深入研究 CXF URIMappingInterceptor。里面有一个方法叫做:

private Object readType(String value, Class type)

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

:-)

关于java - 使用 GET 调用带有数组参数的 JAX-WS Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921635/

相关文章:

java - 如何更改 Web 服务上的端点

Java - 如何将 JProgressBar 与 SwingWorker 一起使用

java - 一次运行一个调度程序

java - 在android上安装Java库[GIThub源代码]

web-services - 如何从 Java 调用 ASP.NET Web API

Java HTTP PUT 不发送数据

java - 从 XML Schema 数据类型转换为 Java int

ios - 如何在 Swift 3 中为来自 web 服务的 Json 响应创建模型类

java - 在运行时为使用 wsimport 生成的代码覆盖或设置 Web 服务端点

java - Jax-WS - 在实现 Web 服务时,您可以像调用任何 pojo 一样调用另一个 Web 服务吗?