gpt4 book ai didi

javascript - 在 JavaScript 中创建 SOAP XMLHttpRequest 请求

转载 作者:行者123 更新时间:2023-11-30 20:26:03 24 4
gpt4 key购买 nike

我正在尝试用 JavaScript 创建 SOAP 请求,但得到了错误的响应。

这是我的要求:

callSOAP() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', 'https://webapi.allegro.pl/service.php', true);
var sr =
'<?xml version="1.0" encoding="utf-8"?>' +
'<SOAP-ENV:Envelope ' +
'xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" ' +
'xmlns:main="https://webapi.allegro.pl/service.php" ' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
'xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
'<SOAP-ENV:Body>' +
'<main:DoGetCountriesRequest>' +
'<main:countryCode>1</main:countryCode>' +
'<main:webapiKey>xxxxxxxx</main:webapiKey>' +
'</main:DoGetCountriesRequest>' +
'</SOAP-ENV:Body>' +
'</SOAP-ENV:Envelope>';

xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log(xmlhttp.response);
}
};
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.send(sr);
}

我尝试调用“DoGetCountriesRequest”方法,但响应是状态代码 500 和一条消息“无效的 XML”。

这是在 JavaScript 中调用 SOAP 方法的正确方法吗?我的要求有什么问题?

最佳答案

看起来您正在将请求发送到 ?wsdl 端点 - 从您的 xmlhttp.open() 方法调用中的 URL 中删除它以将其发送到服务本身。

您的 SOAP 消息似乎格式不正确 - 您过早关闭了 SOAP-ENV:Envelope 开始标记 - 它还需要包围您的 xmlns:xsixmlns:xsd 命名空间定义:

'<?xml version="1.0" encoding="utf-8"?>' +
'<SOAP-ENV:Envelope ' +
'xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:main="https://webapi.allegro.pl/service.php"' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
'xmlns:xsd="http://www.w3.org/2001/XMLSchema">' + ...

跟进编辑:您的 countryCode 和 webapiKey 开始标记中有一些双引号需要删除,看起来消息本身不符合 WSDL - WSDL 中的操作 doGetCountries 需要 DoGetCountriesRequest 对象。尝试类似的东西:

var sr = 
'<?xml version="1.0" encoding="utf-8"?>' +
'<SOAP-ENV:Envelope ' +
'xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" ' +
'xmlns:main="https://webapi.allegro.pl/service.php" ' +
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
'xmlns:xsd="http://www.w3.org/2001/XMLSchema">' +
'<SOAP-ENV:Body>' +
'<main:DoGetCountriesRequest>' +
'<main:countryCode>1</main:countryCode>' +
'<main:webapiKey>xxxxxxxx</main:webapiKey>' +
'</main:DoGetCountriesRequest>' +
'</SOAP-ENV:Body>' +
'</SOAP-ENV:Envelope>';

关于javascript - 在 JavaScript 中创建 SOAP XMLHttpRequest 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917124/

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