gpt4 book ai didi

jQuery SOAP 可能在元素中没有前缀但在方法中带有前缀的调用

转载 作者:行者123 更新时间:2023-12-01 01:33:22 27 4
gpt4 key购买 nike

我需要进行如下所示的 SOAP 调用:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sig="http://anotherNameSpace">
<soap:Body>
<a:getCertificate xmlns:a="http://anotherNameSpace">
<name>John</name>
</a:getCertificate>
</soap:Body>
</soap:Envelope>

所以我使用 jQuery SOAP 插件编写了这段 JavaScript 代码:

function soapCall(user, pass){
$.soap({
url: "myWdslAddress",
method: "getCertificate",
data: {
name: user
},
namespaceQualifier: "tns",
namespaceURL: "http://anotherNameSpace",
noPrefix: true,
enableLogging: true,
envAttributes: {
'xmlns:sig': 'http://anotherNameSpace'
},
HTTPHeaders: {
'Authorization': 'Basic ' + btoa(user + ':' + pass)
}
});
}

但它不起作用,因为它生成以下请求:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sig="http://anotherNameSpace">
<soap:Body>
<tns:getCertificate xmlns:tns="http://anotherNameSpace">
<tns:name>John</tns:name>
</tns:getCertificate>
</soap:Body>
</soap:Envelope>

所以我需要从“name”元素中删除“tns”前缀。我尝试删除“namespaceQualifier:”tns“,但它从 getCertificate 节点和名称节点中删除。我只需要从“name”节点删除前缀;getCertificate 节点必须带有前缀。

可以这样做吗?

提前致谢

最佳答案

我找到了以下解决方法,仅将命名空间添加到方法而不是其元素。这是我的 SOAP 要求:

$.soap({ /
url: 'http://webservice',
method: 'method'
appendMethodToURL: false,
data: { mydata },

namespaceQualifier: 'tns',
namespaceURL: 'urn:my.namespace',
noPrefix: true,
elementName: 'tns:method',

...
});

重要的部分是设置 noPrefix: true 并将硬编码到与方法相同的 elementName 的命名空间添加到前面。

关于jQuery SOAP 可能在元素中没有前缀但在方法中带有前缀的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26527678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com