我有以下代码示例调用Web API方法:
DECLARE @Object AS int;
DECLARE @ResponSEText AS Varchar(8000);
DECLARE @Token AS Varchar(8000);
DECLARE @xmltest AS Varchar(8000);
DECLARE @hResult AS int
DECLARE @source varchar(255), @desc varchar(255)
DECLARE @LocationId varchar(25);
DECLARE @Body AS varchar(8000) = '{
"UserName": "username",
"Password": "password"
}'
--EXEC sp_OACREATE 'MSXML2.XMLHTTP', @Object OUT;
EXEC sp_OACREATE 'MSXML2.ServerXMLHttp', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'POST', 'https://urgentcargus.azure-api.net/api/LoginUser', 'false'
EXEC sp_OAMethod @Object, 'SETRequestHeader', null, 'Content-Type', 'application/json'
DECLARE @len int
SET @len = len(@body)
EXEC sp_OAMethod @Object, 'SETRequestHeader', null, 'Ocp-Apim-Subscription-Key','23cb2410112b4c01bc397bcda0d18487'
EXEC sp_OAMethod @Object, 'SETRequestHeader', null, 'Ocp-Apim-Trace:true'
EXEC sp_OAMethod @Object, 'SETRequestHeader', null, 'Content-Length', @len
EXEC sp_OAMethod @Object, 'SETRequestBody', null, 'Body', @body
EXEC sp_OAMethod @Object, 'Send', null, @body
EXEC sp_OAMethod @Object, 'responSEText', @ResponSEText OUTPUT
SELECT @Token=@ResponSEText
EXEC sp_OADestroy @Object
SET @Token ='Bearer '+ REPLACE(@Token,'"','')
PRINT @Token
在我的笔记本电脑(Win10,SQL Server 2017)上,我的响应时间不到一秒钟。但是,即使在客户服务器(Windows Server 2012R2,SQL Server 2017)返回NULL
时,也要花费将近21秒才能获得响应。
有什么我想念的吗?我猜想它必须在网络上做一些与服务器设置以及它的运行方式有关的事情。谢谢
答案 0 :(得分:1)
服务器是通过代理还是直接通过?如果直接使用而不使用任何代理,则添加一个代理可能会有所帮助。我在Database Mail
中使用SQL
遇到了同样的问题,在设置代理并添加端口SQL
之前,我无法发送任何电子邮件。