json - Node.js SOAP 客户端参数格式化

标签 json node.js soap client

我在使用 node.js 作为客户端的 node-soap 模块将一个特定的 soap 参数正确格式化为第 3 方 SOAP 服务时遇到了问题。

此方法的 client.describe() 表示此特定输入应采用以下形式:

params: { 'param[]': {} }

我尝试了一堆不同的 JSON 符号来尝试使我的数据适合那种形状。 无效的格式示例:

"params": { "param": [ {"myParameterName": "myParameterValue"} ] }
"params": [ "param": { "name": "myParameterName", "_": "myParameterValue"} ]
"params": { "param" : [ {"name": "myParameterName", "_": "myParameterValue"} ] }
"params": { "param[]": {"myParameterName": "myParameterValue" } }
"params": { "param[myParameterName]": {"_": "myParameterValue" } }

我一定是忽略了一些东西,我怀疑当一些好人指出我做错了什么时,我会觉得自己像 Captain Obvious。

以下是使用其他 soap 客户端的有效方法,以及它们如何处理“带值的命名参数”

此方法的 soapUI 通过 XML 形式成功地接受此特定输入:

<ns:params>
    <ns:param name="myParameterName">myParameterValue</ns:param>
</ns:params>

此外,使用 PHP,我可以通过创建数组的 stdClass 来成功进行调用,如下所示:

$parms = new stdClass;
$parms->param = array(
    array(
        "name"=>"myParameterName","_"=>"myParameterValue"
    )
);

然后最终通过

'params' => $parms 

到 PHP soap 客户端

非常感谢!

最佳答案

为了更好地了解 node-soap 生成的 XML,我在对象到 XML 编码之后向 node_modules/soap/lib/client.js 添加了一个 console.log(message) 语句。然后,我开始尝试各种 JSON 结构,以凭经验弄清楚它们是如何映射到 XML 结构的。

我为 node-soap 找到了一个 JSON 结构,以我的第 3 方所需的命名参数和值格式生成 XML。我完全不知道“$value”这个特殊关键字。看起来这可能已添加到 2014 年 6 月中旬的 0.4.6 版本中。参见 the change history

"params": [
  { 
    "param": {
       "attributes": {
          "name": "myParameterName"
       },
       $value: "myParameterValue"
    } 
  }
]

(注意外部数组,它让我可以指定多个“参数”条目,这有时是这个特定的第 3 方 API 所需要的)

生成此 XML:

<tns:params>
  <tns:param name="myParameterName">myParameterValue</tns:param>
</tns:params>

它与 soapUI 中的结构(我已经知道它有效)完美匹配:

<ns:params>
    <ns:param name="myParameterName">myParameterValue</ns:param>
</ns:params>

关于json - Node.js SOAP 客户端参数格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644871/

相关文章:

mysql - Nodejs异步: return mysql query result in for loop

javascript - 如何防止 "Error: connect ECONNREFUSED"

java - 如何在客户端和服务器上完全拦截 gRPC java 一元调用?

java.lang.ClassNotFoundException : org. hamcrest.Matchers 添加依赖项后 pom.xml

ssl - x509 spring 客户端,证书错误

json - GWT RequestBuilder POST JSON 应用程序/json

javascript - MarkLogic - 查询未定义特定 json 属性的文档

json - WWW::Mechanize 不喜欢 POST json

arrays - 将从外部 Url 返回的 JSON 反序列化为对象

javascript - 如何使用 Jquery 发布对象数组?