SOAP报⽂转成JAVA对象
在今天以前我还没有⽤过代码解析过SOAP报⽂,更别提转成JAVA对象了,今天的任务中报⽂这个模样的,(为防⽌数据信息,以下数据我故意打乱了防⽌泄露什么信息.)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="/soap/envelope/" xmlns:SOAP-ENC="/soap/encoding/" xmlns:xsi="/2001/XMLSchema-instance" xmlns:xsd="/2001/XMLSchem    <SOAP-ENV:Body SOAP-ENV:encodingStyle="/soap/encoding/">
<ns2:CallWSSOP>java xml是什么
<objInputData>
<m-strOrderID>2019123041123509590670</m-strOrderID>
<m-strSerialNumber>85213365571107</m-strSerialNumber>
<nPriority>0</nPriority>
<m-strSwitchid>C123L21231302</m-strSwitchid>
<m-vServList>
<m-strServName>YYH1232</m-strServName>
</m-vServList>
<m-vVarList>
<m-strName>G012302</m-strName>
<m-strValue>455020096628454</m-strValue>
</m-vVarList>
<m-vVarList>
<m-strName>G123004</m-strName>
<m-strValue>85361235571107</m-strValue>
</m-vVarList>
<m-vVarList>
<m-strName>G123071</m-strName>
<m-strValue>0085123265571107</m-strValue>
</m-vVarList>
</objInputData>
</ns2:CallWSSOP>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
上⾯是使⽤POSTMAN美化之后的报⽂样⼦,最开始的报⽂模样是这样的
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="/soap/envelope/" xmlns:SOAP-ENC="/soap/encoding/" xmlns:xsi="/2001/XMLSchema-instance" xmlns:xsd="/2001/XMLSchem
⼀.美化报⽂
美化报⽂不是为了别⼈,是为了⾃⼰看起来⽅便⼀点点,有助于了解对象结构。美化⼯具可能很多,⼿边的⼯具可能就POSTMAN,就以这个为例了,相信⼈⼿都会装有⼀个。
在POSTMAN中随意打开⼀个,Body⾥⾯贴上原始报⽂,然后调成XML,点击Beauty即可美化报⽂.
wsdl⽂件
由于组长发给我的⽂档⾥⾯没有这个SOAP的地址,只有⼀份接⼝参数说明以及wsdl⽂件,接⼝地址暂时还没给我,所以我们利⽤wsdl⽂件⽣成java实体类,soap的url也是⼀样的效果.
以下是操作步骤,将wsdl⽂件放到⼯程的某个⽂件⽬录下,右击 WebService—>Generate  Java Code from wsdl  (这⾥指定wsdl路径应该是⼀样的效果)—>  选定 Axis2  和 JaxB,以及⽣成的⽬录即可,但是每
次⽣成位置稍有不对,⼿动移下就⾏了,这样就⽣成了Java对象.
四.采坑的点
按照别⼈写的直接获取SoapBody在使⽤extractContentAsDocument⽅法,就能够解析成功,⽽到了我这⾥解析下来java实体类中所有属性都是空的,于是我就想到的上⾯的⽅式,这样加⼊SoapBody中存在多个属性,⽐如和
CallWSSOP同级的java类,也能够解析出来.
另外我尝试了好久去利⽤@XmlNs发现,这个注解好像根本不起作⽤,这⾥⾯待研究的好多,但是以后碰到像我遇到这么复杂的报⽂,解析⽅式按照上⾯来就可以啦.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。