【问题标题】:How to understand node-soap "describe" function?如何理解节点肥皂“描述”功能?
【发布时间】:2014-08-13 23:41:12
【问题描述】:

我正在尝试使用节点 SOAP npm 模块(https://github.com/vpulim/node-soap) 服务。

var soap = require('soap');
var soapWSDL = "https://webservice.s7.exacttarget.com/etframework.wsdl";

soap.createClient(soapWSDL, function (err, client) {
    if (err) {
      return callback(err, null);
    }

    client.setSecurity(new soap.WSSecurity(self.username, self.password));

    console.log("describe", client.describe());
    console.log("retrieve", client.describe().PartnerAPI.Soap.Retrieve);
});

第一个日志显示了可用的方法...

但我正在尝试从第二个 console.log 中了解参数所需的确切格式...

更具体地说,当我打电话给client.Retrieve(options,function(e,r){}); 时,options 的要求格式应该是什么?

这是两个 console.logs 的输出

描述:

 { PartnerAPI: 
   { Soap: 
      { Create: [Object],
        Retrieve: [Object],
        Update: [Object],
        Delete: [Object],
        Query: [Object],
        Describe: [Object],
        Execute: [Object],
        Perform: [Object],
        Configure: [Object],
        Schedule: [Object],
        VersionInfo: [Object],
        Extract: [Object],
        GetSystemStatus: [Object] } } }

检索:

 { input: 
   { RetrieveRequest: 
      { 'ClientIDs[]': [Object],
        ObjectType: 'xsd:string',
        'Properties[]': 'xsd:string',
        Filter: [Object],
        'RespondTo[]': [Object],
        'PartnerProperties[]': [Object],
        ContinueRequest: 'xsd:string',
        QueryAllAccounts: 'xsd:boolean',
        RetrieveAllSinceLastBatch: 'xsd:boolean',
        RepeatLastResult: 'xsd:boolean',
        Retrieves: [Object],
        Options: [Object],
        targetNSAlias: 'tns',
        targetNamespace: 'http://exacttarget.com/wsdl/partnerAPI' } },
  output: 
   { OverallStatus: 'xsd:string',
     RequestID: 'xsd:string',
     'Results[]': 
      { Client: [Object],
        PartnerKey: 'xsd:string',
        'PartnerProperties[]': [Object],
        CreatedDate: 'xsd:dateTime',
        ModifiedDate: 'xsd:dateTime',
        ID: 'xsd:int',
        ObjectID: 'xsd:string',
        CustomerKey: 'xsd:string',
        Owner: [Object],
        CorrelationID: 'xsd:string',
        ObjectState: 'xsd:string',
        targetNSAlias: 'tns',
        targetNamespace: 'http://exacttarget.com/wsdl/partnerAPI' } } }

【问题讨论】:

    标签: node.js soap


    【解决方案1】:

    在此示例中,您应该查看键名和格式。例如,任何末尾带有[] 的键都意味着这应该是SOAP Sequence。在没有看到输入/输出的完整格式的情况下,我无法 100% 确定某些内容 - 您可以尝试使用 Node.js 的 util 函数来深入检查对象。 例如:

    var utils = require('utils');
    /* later */
    console.log( utils.inspect( testObject, {depth: null} ) );
    

    尽我所能回答您的问题:

    var args = {
      ClientIDs: [{ /* Some object - not sure without inspect */ }],
      ObjectType: 'someString',
      Properties: ['someString', 'someString'],
      Filter: { /* Some object - not sure without inspect */ },
      RespondTo: [{ /* Some object - not sure without inspect */ }],
      PartnerProperties: [{ /* Some object - not sure without inspect */ }],
      ContinueRequest: 'someString',
      QueryAllAccounts: true, /* or false */
      RetrieveAllSinceLastBatch: true, /* or false */
      RepeatLastResult: true, /* or false */
      Retrieves: [{ /* Some object - not sure without inspect */ }],
      Options: [{ /* Some object - not sure without inspect */ }]
    }
    
    client.RetrieveRequest(args, function(err, result, raw, soapHeader) {
      /* do something with the result */
    });
    

    【讨论】:

      【解决方案2】:

      您可以使用JSON.stringify 选项查看您从client.describe() 获得的输出的详细信息。它将以.json 格式显示所有参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-11
        相关资源
        最近更新 更多