首页 > 解决方案 > SQL Server sp_OAMethod 在调用 WebAPI 时返回 NULL

问题描述

我们正在尝试检索由私有第三方 WebAPI 提供的一些 JSON 结果。出于某种原因,其中一个调用每次都返回 NULL。如果我们使用不同的 URI 调用来访问不同的信息,它就可以工作。但是,这个尤其行不通。

Declare @Object as Int;
Declare @ResponseText as Varchar(8000);
Declare @URI varchar(max) = 'https://thethridpartysite.com/api/1234/listorders/'

Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @URI, 'false'
Exec sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type', 'application/json; charset=utf-8'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT

SELECT @ResponseText;

在上面,如果我将“listorders”更改为“listproducts”,它将起作用。

我认为这可能是因为“listorders”返回超过 8000 个字符,但是当我更改 @ResponseText 变量“varchar(max)”时,我仍然得到 NULL

标签: jsonsql-serverrestrestful-url

解决方案


在尝试了很多事情之后,我无法弄清楚为什么 OLE 自动化方法返回 NULL 值。因此,我最终使用 SQL CLR 构建了所有内容,并且成功了。

我有效地使用了以下链接中讨论的步骤(我自己的想法):

https://blogs.msdn.microsoft.com/sqllive/2008/06/18/accessing-rest-based-web-services-using-sql-clr/

我遇到了一些学习上的痛苦和一些问题,但我能够解决它们。祝那些关注并感谢那些回复我的 OP 的人好运。


推荐阅读