【问题标题】:Java SOAP WS client code throws AxisFault while SOAP UI does'ntJava SOAP WS 客户端代码抛出 AxisFault 而 SOAPUI 没有
【发布时间】:2015-07-16 08:18:52
【问题描述】:

在 Java 中使用第三方基于 SOAP 的 Web 服务时(通过生成 Web 服务客户端),由于 SOAP 响应中存在特殊字符(#、&),生成的代理代码会引发 AxisFault 异常。这意味着,服务提供者处理请求并发回响应。尝试同一请求时,可以在 SOAP UI 中看到响应。

{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException;行号:3;列号:180764;字符引用 "

上述异常是由生成的 WS 客户端内部使用的 apache 轴 SAX 解析器引发的。

请帮我解决这个问题?生成代码中的编码类型为 UTF-8。

提前致谢!!

另外,在 SOAP UI 中指出,带有特殊字符的 xml 响应格式不正确。验证时显示 xml 错误。没有特殊字符的响应不是这种情况。

【问题讨论】:

  • 你能添加完整的堆栈跟踪和 SOAP 请求吗?
  • 出现问题是因为生成的客户端代码 (wsimport / axis) 在内部使用了 SAX-PARSER,它无法解析具有特殊字符的响应,因为它是无效的 xml。可能的解决方案是服务提供者应该将响应包含在 CDATA 中(如果响应结构在 WSDL 中未定义)/应该使用直接 http 调用来使用服务。

标签: java web-services soap axis webservice-client


【解决方案1】:

这意味着,您正在使用 Apache Axis 生成客户端代码(存根)。我认为您正在 Eclipse 中执行此操作(通过使用 New wixard 创建 Web 服务客户端)。永远不要那样做。 Eclipse internallu 默认使用 Apache Axis。所以你可能会遇到问题。 尝试使用JDK1.6及以上版本自带的'WSIMPORT'工具生成客户端代码。 您可以使用此链接WSIMPORT

【讨论】:

  • 如你所说,我是通过eclipse插件生成代码的。现在,我尝试使用 WSIMPORT 为 SOAP1.2 绑定生成代码。不幸的是,生成的代码没有检索到响应。
  • 您能够从 SOAP UI 获得响应,这意味着服务工作正常,您的代码不工作。你可以添加你的代码,你是如何进行 SOAP 调用的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 2012-04-16
  • 2018-04-22
  • 1970-01-01
相关资源
最近更新 更多