Мне нужен способ обработки ошибок SOAP в Javascript (React).Мои SOAP-запросы сделаны не напрямую из React, а из Node.js, который я использую в качестве прокси-сервера.
То, что я уже пробовал:
fetch("/FreePUOrderNo", {
crossDomain: true,
method: "POST",
withCredentials: true,
headers: {
Accept: "text/xml",
"Content-Type": "application/json"
},
body: JSON.stringify({
puOrderNo: puOrderNo
})
}).then(response => response.text())
.then(str => {
dataAsJson = convert.xml2json(str);
console.log(dataAsJson);
На данный момент, ответвыглядит примерно так:
{"elements":[{"type":"element","name":"s:Envelope","attributes":{"xmlns:s":"http://schemas.xmlsoap.org/soap/envelope/"},"elements":[{"type":"element","name":"s:Body","elements":[{"type":"element","name":"s:Fault","elements":[{"type":"element","name":"faultcode","attributes":{"xmlns:a":"urn:microsoft-dynamics-schemas/error"},"elements":[{"type":"text","text":"a:Microsoft.Dynamics.Nav.Types.Exceptions.NavNCLDialogException"}]},{"type":"element","name":"faultstring","attributes":{"xml:lang":"en-US"},"elements":[{"type":"text","text":"You cannot Modify or Perform Actions in Cancelled PU Order."}]},{"type":"element","name":"detail","elements":[{"type":"element","name":"string","attributes":{"xmlns":"http://schemas.microsoft.com/2003/10/Serialization/"},"elements":[{"type":"text","text":"You cannot Modify or Perform Actions in Cancelled PU Order."}]}]}]}]}]}]}
Итак, что я сделал, чтобы получить «Вы не можете изменять или выполнять действия в отмененном заказе PU».это:
if ("faultcode" in dataAsJson) {
const res =
dataAsJson["elements"][0].elements[0].elements[0].elements[1].elements[0].text;
console.log(res);
}
Я получаю эту ошибку:
Uncaught (in promise) TypeError: Cannot use 'in' operator to search for 'faultcode' in {"elements": .... }]]}}]}
Я не знаю, почему я получаю эту ошибку, так как я использую оператор 'in' с объектом.Кроме того, я не знаю других способов обработки ошибок в запросах SOAP.
Любая помощь будет принята с благодарностью!