Tomcat - Axis 1.4 - org.xml.sax.SAXParseException; lineNumber:x; columnNumber:y;
在WebLogic中,我们使用weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask
,有蚂蚁,从WSDL文件生成Web服务客户端罐子。 在Tomcat中字符引用“&#
我们正在从Weblogic的移动到Tomcat,我们正在尝试使用Axis 1.4 Maven中,产生相同的Web服务客户Tomcat - Axis 1.4 - org.xml.sax.SAXParseException; lineNumber:x; columnNumber:y;</p> <p>在WebLogic中,我们使用<code>weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask</code>,有蚂蚁,从WSDL文件生成Web服务客户端罐子。 在Tomcat中字符引用“&#
一个web服务的调用与下面的示例响应:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 04 Jul 2017 20:35:37 GMT
Connection: close
Content-Length: 898
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body>
<MyRequestResponse xmlns="http://tempuri.org/">
<MyRequestResult>~BLDSQPQP(........)2678700000 000 </MyRequestResult>
</MyRequestResponse>
</s:Body></s:Envelope>
然而,我们得到一个运行时异常,当我们调用/调用所产生的Web服务客户端轴1.4:
org.xml.sax.SAXParseException; lineNumber:x; columnNumber:y;字符引用“&#
看来,Axis的SAX解析器是不是期待着与&后#XML实体。 不幸的是,我们不能改变web服务响应的行为/内容。
是否有任何方式,以解决客户端上的这一问题,例如,禁用XML验证或使其了解这些实体
代码调用客户端:
service = new BrowserServiceLocator();
service.setEndpointAddress("HttpWebService", webserviceUrl);
IBrowserService myService = (IBrowserService) service.getHttpWebService();
myResponse = myService.myRequest(object, verb, user.getMyUser(), user.getCenter(), inputData);
注:我们目前不能因为我们使用的RPC编码的WSDL更新到轴2。
编辑 - 请看下面Weblogic是如何处理这个角色的。 (使用的Weblogic)
在记事本++
Tomcat是能够处理的那些种类的字符,它的轴线XML解析器不能。
尝试使用过滤器拦截响应和替换错误的字符与空间,以保持响应结构如果这对你很重要: How to write response filter?
Replace response body using filter
显然,如果可能的话,修复这种服务会在响应中发送您的应用中的那些字符。
轴的行为是正确的这里,看到https://stackoverflow.com/a/28152666/180100。另请参见https://issues.apache.org/jira/browse/AXIS-2025 –
@RC。我了解Axis的行为在这里可能是正确的。不过,我想还是可以(如果需要的话为1.1)来解析XML,并使其了解实体(因为它们是有效的,也)。有什么办法可以做到吗?谢谢。 – Nuno
我可能会通过使用一些请求来获取内容(HttpClient),用一些常规xml解析器(XStream)现在有效的xml来替换错误的内容(或'