2 回答
TA贡献1877条经验 获得超1个赞
我在想原因是因为你做了SELECT @ResponseText然后你对SELECT返回的任何东西都不做任何事情,最后你破坏了对象。
尝试将您在 @ResponseText 中保存的响应分配给另一个变量。在下面的示例中,我正在登录一个 rest API,然后将响应分配给另一个变量:
EXEC sp_OACREATE 'MSXML2.ServerXMLHttp', @Object OUT;
EXEC sp_OAMethod @Object, 'Open', NULL, 'POST', 'https://url.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','4f82f9d067914287979884f920d86ffb'
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
TA贡献1772条经验 获得超6个赞
尝试在临时表中使用 SELECT 来评估结果。
DECLARE @tableResponseText TABLE (
[ResponseText] VARCHAR(MAX)
)
您的设置/发送语句
收集响应数据
EXEC @RC = sp_OAGetProperty @Object, 'status', @HttpResponseCode OUT
INSERT INTO @tableResponseText ([ResponseText]) EXEC sp_OAGetProperty @Object, 'responseText'
- 2 回答
- 0 关注
- 343 浏览
添加回答
举报