我正在尝试使用节点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 */
});
