Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Web服务响应包含无效的XML字符_Java_Web Services_Axis - Fatal编程技术网

Java Web服务响应包含无效的XML字符

Java Web服务响应包含无效的XML字符,java,web-services,axis,Java,Web Services,Axis,我的应用程序正在连接到web服务rpc/encoded。即时通讯使用轴1.4。 当webservice发送响应时,它先发送无效字符,然后发送异常: http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x3) was found in the element content of the document. xml编码为“ISO-8

我的应用程序正在连接到web服务rpc/encoded。即时通讯使用轴1.4。 当webservice发送响应时,它先发送无效字符,然后发送异常:

http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: 
  An invalid XML character (Unicode: 0x3) was found in the element content of the document.
xml编码为“ISO-8859-1”。我认为这就是问题所在

我的问题是:我的应用程序中是否可以进行任何配置以接受此无效字符?

“我的应用程序正在连接到web服务rpc/encoded。”


这就是问题所在。该服务为“rpc/编码”,不符合WS-I。开发商在过去的某个时候经过一些激烈的讨论后做出了决定

我解决了在org.apache.axis.handlers.LogHandler中放置一个方法的问题,该方法在解析xml响应中的内容之前搜索并销毁非法字符

在新LogHandler的logMessages方法中,放置以下内容:

私有void日志消息(MessageContext msgContext)引发AxisFault{
...
msgContext.setResponseMessage(新消息(
stripNonValidXMLCharacters((消息)msgContext
.getResponseMessage()).getSOAPPartAsString());
...
}

如果没有更多关于web服务的详细信息,以及如何调用它和解析结果,就很难说了。问题可能出在服务器上。XML 1.0规范禁止控制字符,如U+0003,无论字符编码如何,您甚至无法使用
。如果服务抱怨您发送了无效字符,那么您必须修复您的客户端,如果客户端抱怨其在响应中收到的字符,则您必须与服务所有者联系。作为一个快速的“脏”解决方案,您可以编写一个代理,从响应中删除非法字符。感谢您的帮助。我将问题提交给web服务所有者。顺便说一句@konstantiv.Salikhov您的解决方案运行良好。web服务所有者告诉我需要将我的应用程序更改为acept“ISO-8859-1”,他们对此无能为力。我还在等待帮助。Axis1.4中有一种方法可以自动生成存根来处理“rpc/编码”。这样你就不必截取回应了。但是,我了解到它不适用于CXF,并且您将永久绑定到Axis 1.x。看见