我正在使用 strong-soap 模块与 Node.js ,我正在尝试将请求RPC发送到Web服务。
我创建了一个带有选项的客户端:
var wsdlOptions = {
attributesKey: '$attributes',
valueKey: '$value'
};
我将参数设置如下:
var args = {
'para': {
$attributes: {
$xsiType: "xsd:string"
},
$value: 'a'
},
'parb': {
$attributes: {
$xsiType: "xsd:string"
},
$value: 'b'
},
'parc': {
$attributes: {
$xsiType: "xsd:string"
},
$value: 'c'
}
};
然而,当我调用该方法时,它会生成xml(信封):
<ns1:query xmlns:ns1="http://<host>">
<para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="" xsi:type="xsd:string">a</para>
<parb xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="" xsi:type="xsd:string">b</parb>
<parc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="" xsi:type="xsd:string">c</parc>
</ns1:query>
我收到一条错误消息:
属性“prefix =”xmlns“,localpart =”xsd“,rawname =”xmlns:xsd“”的值无效。带前缀的命名空间绑定可能不为空。
我没有看到任何方法从方法调用中设置或删除此参数。 当我在参数中设置$ xsiType时,lib会自动设置一个空的xmlns:xsd。
我正在与之交互的Web服务有一个旧的soap实现,我认为这可能是问题所在。有什么建议?
答案 0 :(得分:0)
指定$xsiType
的值时,请尝试使用以下格式:
"{namespace uri}namespace:type"
例如,对于xsd
命名空间,您可以指定以下内容:
$xsiType: "{http://www.w3.org/2001/XMLSchema}xsd:string"
以上内容应该产生以下内容:
<para xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="xsd:string">a</para>