node-soap是一个在nodejs下调用webservice的工具包,当前版本是0.15.0,可以直接从NPM中下载,
这个版本会要求按装python,如果觉得太麻烦的话,可以按装他以前的版本,0.13.0
言归正传,我们在调用一些复杂一点的webService时,经常会报一类错误
"Unmarshalling Error: unexpected element (uri:"", local:"FirstChannelNo"). Expected elements are (none)"
错误的大概意思是,解析包时出现误,出现了一个不知道是什么东西的变量FirstChannelNo.
研究我们会发现,会报这类错的变量在WSDL中的描述是
<xs:attribute name="FirstChannelNo" type="xs:anySimpleType"/>
这里的重点是那个attribute,意思是说,FirstChannelNo并不是一个值,而是一个属性.那么好了,我们在用JSON往接口中送参数时,如何才能描述一个节点是属性而不是普通的值呢?
我们可以这么写:
"channelInfo": {
attributes: {
"FirstChannelNo": "71"
}
}
可以看到代码中同样有一个attributes,那么如果那天我们真有一个值的名称就是attributes咋办呢?官方的办法是,通过wsdlOptions来修改这个属性名.
var wsdlOptions = { attributesKey: '$attributes' }; soap.createClient(wsdl, wsdlOptions, function (err, client) { client.*method*({ parentnode: { childnode: { $attributes: { name: 'childsname' } } } }); });
版权声明:本文为ugrggame原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。