【发布时间】:2021-09-03 14:29:07
【问题描述】:
我在这里真的很艰难,这是我第一次使用 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(),使用会话标识符和私钥——保存名称值- 调用
GetCurrentCallStats3()- 这将返回一个类别列表/数组,其中每个类别具有不同的监视器值。
- NewCasesSince – 我们使用当天的开始时间,较旧的值使用更多资源,并可能导致调用因过度使用资源而终止。 日期的格式是 YYYY-MM-DD HH:mm 例如2017-09-30 00:00 您可以将其选择为更新的日期/时间 - 例如1 小时前显示最近一小时内的新病例。
- HoursUntilDue - 这控制结果中返回的值 CasesDueInXMinutes 我们的监视器将此值设置为 4 - 未来 4 小时内到期的案例计数。
- 致电
Logout()
【问题讨论】:
-
如果我没记错的话,这个错误是指传递给 SQL Server 存储过程的缺少参数。如果您是说通过运行上面的代码得到了这个错误,那么它一定是在 ASMX WebService 上发生的。您有权访问 WebService 代码库吗?无论哪种方式,它都与您发布的代码无关。
-
另外
oXmlHTTP.responseText是“捕获的响应”,所以也不确定你的意思。 -
您好@user692942 不幸的是,ASMX 是由另一家公司提供的,我无法访问 SQL 或 ASMX 代码。该服务的文档 - 在我看来 - 很差 - 我会在几分钟内发布文档,尽管它并不多,但它是我所拥有的。
-
@AlwaysLearning Classic ASP 不是 ASP.Net,您说的是使用
wsdl.exe为 ASP.Net Web 应用程序生成客户端存根,但事实并非如此。
标签: web-services soap asp-classic asmx