https://cn.community.intersystems.com/post/%E9%80%82%E9%85%8D%E5%99%A8%E8%B0%83%E7%94%A8webservice%E6%8E%A5%E5%8F%A3%E6%97%B6%E6%8A%A5%E9%94%99%E8%AF%AF-6232-%E5%AF%B9%E5%85%B7%E6%9C%89%E5%80%BC%E7%9A%84%E6%A0%87%E8%AE%B0return-%EF%BC%88%E7%BB%93%E6%9D%9F%E4%BA%8E%E8%A1%8C1%E5%AD%97%E7%AC%A6155%EF%BC%89%E7%9A%84%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E9%AA%8C%E8%AF%81%E5%A4%B1%E8%B4%A5
你好,从执行日志上看,问题发生在SOAP Adapter尝试将字符流转换为XML的过程中,由于不能正确地识别XML中的节点标记导致错误,这类问题根源出现在被调用一方的返回消息中,常见的情况包括:
1. 被调用端与IRIS两侧采用的编码不同,例如对端采用GB18030而IRIS采用UTF-8(SOAP服务默认编码),导致无法正确解析XML
2. 对端返回的不是合法XML,可能包括XML结构错误、包含ASCII码控制字符等
建议:
保存对端返回的报文,然后
1. 确认对端返回报文的编码,可以使用ATOM、UltraEdit等文本编辑器进行编码转化,查看字符是否能正常显示
2. 采用XML SPY、Oxygen XML Editor等专业XML处理工具对报文进行XML合法性校验
核心是先确认对端返回的是合法、编码正确的XML