我正在使用npm soap包连接到SOAP API并调用方法,而我并没有理解它应该如何工作。
例如,在API文档中,它以此为例:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://xxx">
<soapenv:Header/>
<soapenv:Body>
<ser:setSessionParameters>
<viewSettings>
<forceLogoutSession>yes</forceLogoutSession>
<rollingPeriod>Minutes30</rollingPeriod>
<shiftStart>21600000</shiftStart>
<statisticsRange>CurrentDay</statisticsRange>
<timeZone>-28800000</timeZone>
<idleTimeOut>1800</idleTimeOut>
</viewSettings>
</ser:setSessionParameters>
</soapenv:Body>
</soapenv:Envelope>
如果我使用REST工具将此内容发送到API端点,它将按预期工作。
在我的代码中,如果我调用此方法调用:
var x = client.describe();
console.log(x.WsSupervisorService.WsSupervisorPort.setSessionParameters);
我收到了这个回复:
{
input: {
viewSettings: {
appType: 'xs:string',
forceLogoutSession: 'xs:boolean',
rollingPeriod: 'rollingPeriod|xs:string|Minutes5,Minutes10,Minutes15,Minutes30,Hour1,Hours2,Hours3,Today',
shiftStart: 'xs:int',
statisticsRange: 'statisticsRange|xs:string|RollingHour,CurrentDay,CurrentWeek,CurrentMonth,Lifetime,CurrentShift',
timeZone: 'xs:int',
targetNSAlias: 'tns',
targetNamespace: 'http://xxx'
},
targetNSAlias: 'tns',
targetNamespace: 'http://xxx'
},
output: {
targetNSAlias: 'tns',
targetNamespace: 'http://xxx'
}
}
但这失败了:
client.setSessionParameters({
input: {
viewSettings: {
forceLogoutSession: true,
rollingPeriod: 'Minutes30',
shiftStart: 216000000,
statisticsRange: 'CurrentDay',
timeZone: -288000000,
idleTimeOut: 1800
}
}
});
...产生这个错误:
{[错误:环境:客户端:端点{http://xxx/} WsSupervisorPort不包含以下操作元数据:setSessionParameters] stack:[Getter]}
我在这里不知所措。任何帮助都将非常感激!
答案 0 :(得分:0)
只需尝试:
client.setSessionParameters({
viewSettings: {
forceLogoutSession: true,
rollingPeriod: 'Minutes30',
shiftStart: 216000000,
statisticsRange: 'CurrentDay',
timeZone: -288000000,
idleTimeOut: 1800
}
});