如何捕获 WebServiceSessionID 并将其再次发送到 WebServiceASMX / ASP Classic

问题描述

在这里真的很艰难,这是我第一次使用 ASMX WebServices,所以我正在对此进行试验和错误,所以请与我保持联系。

我已经能够使用下面的 ASP Classic 连接并登录到该服务,但是现在“撞墙”了,我无法在这里或通过谷歌搜索找到解决方案,可能是因为我一个菜鸟,不知道该照顾什么。

当我调用以下脚本时,出现以下错误

过程或函数“stp_ws_GetWebServiceSessionBySessionID”需要未提供的参数“@WebServiceSessionID”

我目前的脚本:

Set oXmlHTTP = CreateObject("Microsoft.XMLHTTP")
oXmlHTTP.Open "POST","https://api.domain.com/services/ws3.asmx",False 

oXmlHTTP.setRequestHeader "Content-Type","text/xml; charset=utf-8" 
oXmlHTTP.setRequestHeader "SOAPAction","http://sub.domain.com/GetCurrentCallStats4"

SOAPRequest = _
"<?xml version=""1.0"" encoding=""utf-8""?>" &_
"<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">" &_

"<soap12:Body>" &_
    "<Login xmlns=""http://sub.domain.com/Login"">" &_
    "<UserIdentifier>a81aeXX-XXXXXXXXXXX-XXX4bec7</UserIdentifier>" &_
    "<PrivateKey>71e3aXX-XXXXXXXXXXX-XXX9e2</PrivateKey>" &_
    "<PublicKey>XD87XX-XXXXXXXXXXX-XXXC45</PublicKey>" &_
    "</Login>" &_  
    "<GetCurrentCallStats4Response xmlns=""https://api.domain.com/services/ws3.asmx"">" &_
    "<GetCurrentCallStats4Result>" &_
        "<StatResult4>" &_
        "<CustomerID>int</CustomerID>" &_
        "<SiteID>int</SiteID>" &_
        "<BrandID>int</BrandID>" &_
        "<CategoryID>int</CategoryID>" &_
        "<Category>string</Category>" &_
        "<TotalCases>int</TotalCases>" &_
        "<NewSince>dateTime</NewSince>" &_
        "<CasesNewSince>int</CasesNewSince>" &_
        "<CasesDue>int</CasesDue>" &_
        "</StatResult4>" &_
    "</GetCurrentCallStats4Result>" &_
    "</GetCurrentCallStats4Response>" &_
"</soap12:Body>" &_
"</soap12:Envelope>"

oXmlHTTP.send SOAPRequest    
Response.Write oXmlHTTP.responseText

如何“捕获”@WebServiceSessionID 并将其再次发送给 WS?

*如果有人也能帮助我下一步如何从服务中捕获数据响应,我将非常感激:-)

更新!他们提供的小文档

对于每个 Web 服务键,您必须重复以下步骤来收集类别级别的统计信息:

https://api.domain.com/services/ws3.asmx 使用网络服务:

  • 调用Login(),并保存返回的会话标识符
  • 使用会话标识符和私钥调用 GetSite() - 保存 Name 值
  • Call GetCurrentCallStats3() – 这将返回类别列表/数组,每个类别具有不同的监视器值。
    • NewCasesSince – 我们使用当天的开始,较旧的值使用更多资源,并可能导致呼叫因过度使用资源而终止。 日期的格式是 YYYY-MM-DD HH:mm 例如2017-09-30 00:00 您可以将其选择为最近的日期/时间 - 例如1 小时前显示过去一小时内的新案例。
    • HoursUntilDue – 这控制结果 CasesDueInXMinutes 中返回的值我们的监视器将此值设置为 4 - 未来 4 小时内到期的案例计数。
  • 致电logout()

解决方法

从 Visual Studio 创建一个 Web 服务引用,它会从 URL 为您创建一个用于调用 Web 服务的类定义?研究服务参考。 这将帮助您发送和检索您可能需要的数据。或者甚至可以尝试免费的 SOAPUI,它允许您为 Web 服务设置测试客户端,以便您可以查看数据是如何传送和返回的,以及您丢失的数据。 https://www.soapui.org/