调用WebAPI时,SQL Server sp_OAMethod返回NULL

时间:2019-05-20 21:10:51

标签: json sql-server rest restful-url

我们正在尝试检索私有第三方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

1 个答案:

答案 0 :(得分:1)

尝试了许多事情之后,我无法弄清为什么OLE Automation方法返回NULL值。因此,我最终使用SQL CLR构建了所有内容,并且一切正常。

我有效地使用了以下链接中讨论的步骤(我自己对此有所了解):

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

我遇到了一些学习上的困难和很多问题,但是我能够解决它们。恭喜那些跟随我的人,并感谢那些对我的OP做出回应的人。