0

我必须发送 SOAP 请求并且我正在使用强肥皂库。我是 SOAP 新手,但如果我理解正确,命名空间应该不会有任何区别,只是我的请求以 :ent 为前缀通过(我已经使用 SOAP UI 对其进行了测试),但是使用以 ns1 为前缀的强肥皂库生成的请求:返回“服务不可用”这是 client.lastRequest 的结果

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header/>
  <soap:Body>
    <ns1:OrdersRequest xmlns:ns1="http://www.lttd.com/entities/entity"> 
      <ns1:PropertyName1>000000</ns1:PropertyName1>
      <ns1:PropertyName2>111111</ns1:PropertyName2>
    </ns1:OrdersRequest>
  </soap:Body>
</soap:Envelope>

但是在正文中具有 :ent 签名的请求在 SOAP UI 内部传递

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ent="http://www.lttd.com/entities/entity">
   <soapenv:Header/>
   <soapenv:Body>
      <ent:OrdersRequest>
          <ent:PropertyName1>000000</ent:PropertyName1>
          <ent:PropertyName2>111111</ent:PropertyName2>
      </ent:OrdersRequest>
   </soapenv:Body>
</soapenv:Envelope>

我已尝试按文档添加

 const wsdlOptions = {
                "overrideRootElement": {
                  "namespace": "myns",
                  "xmlnsAttributes": [{
                    "name": "xmlns:myns",

                  }]
                }
            } 

这根本不影响我的要求。我还查看了有关堆栈溢出的以下问题(以及其他类似问题),但它们对我不起作用。 如何在节点肥皂中添加“命名空间”来请求

这是我的 service.ts

soap.createClient(this.URL, options, (err, client) => {
                if(err){
                    console.log(err)
                   return reject(err);
                } else {
                    let metod = client.myMethodName
                    const query= {query : query }
                    metod(query, (err, result, envelope, soapHeader)=> {
                        resolve(result)
                      });
                    console.log(client.describe())
                    console.log(client.lastRequest);
                }                
            });

所以我的问题是我可以以及如何更改我的 SOAP 正文的前缀

<ns1:PropertyName1>000000</ns1:PropertyName1>

<ent:PropertyName1>000000</ent:PropertyName1>
4

0 回答 0