【发布时间】: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