我们当前正在从Oracle Web Logic迁移到Tomcat 9。
当客户端将Content-Type
为application/x-www-form-urlencoded
的XML发送到Web服务时,我们在Tomcat上遇到了一个问题。从Tomcat请求转储程序过滤器中,我们可以看到它正在将XML视为多个参数。另外,XML包含特殊字符,例如lt;
,gt;
等。
但是,在Web Logic上,当使用相同的内容类型发送相同的XML时,它可以成功处理请求。该代码仅被修改为包括额外的调试语句,以帮助解决此问题。
是否存在Tomcat配置设置,外部库或Tomcat过滤器,以允许将请求字符串中的XML放置在正文中或以某种方式访问?
在此问题上的任何帮助将不胜感激。
从请求转储者过滤器输出(已删除敏感信息;仅摘要-XML格式正确):
https-openssl-nio-443-exec-5 contentLength=1234
https-openssl-nio-443-exec-5 contentType=application/x-www-form-urlencoded
https-openssl-nio-443-exec-5 contextPath=
https-openssl-nio-443-exec-5 header=accept-encoding=gzip,deflate
https-openssl-nio-443-exec-5 header=content-type=application/x-www-form-urlencoded
https-openssl-nio-443-exec-5 header=authorization=Basic abc
https-openssl-nio-443-exec-5 header=content-length=1404
https-openssl-nio-443-exec-5 header=host=host
https-openssl-nio-443-exec-5 header=connection=Keep-Alive
https-openssl-nio-443-exec-5 header=user-agent=Apache-HttpClient/4.1.1 (java 1.5)
https-openssl-nio-443-exec-5 locale=en_US
https-openssl-nio-443-exec-5 method=POST
https-openssl-nio-443-exec-5 parameter=requesterId=1234
https-openssl-nio-443-exec-5 parameter=<?xml version="1.0"?>
<RootElement>
<Element1>2019-12-13</PrivateDate1>
<Element2>2019-12-18</PrivateDate2>
https-openssl-nio-443-exec-5 parameter=lt;a href=http://www.google.com/
https-openssl-nio-443-exec-5 parameter=gt;
Link
https-openssl-nio-443-exec-5 parameter=lt;/a=,
https-openssl-nio-443-exec-5 parameter=gt; =
https-openssl-nio-443-exec-5 parameter=gt;Notes=