我正在尝试使用节点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) { i
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中了解params所需的确切格式…
更具体地说,当我调用client.Retrieve(options,function(e,r){});什么是所需的选项格式?
这是两个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' } } }在此示例中,您应该查看密钥名称和格式.例如,任何末尾带有[]的键意味着它应该是SOAP序列.如果没有看到输入/输出的整个格式,我就无法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 */ });