SQL Server sp_OAMethod возвращает NULL при вызове WebAPI - PullRequest
1 голос
/ 21 мая 2019

Мы пытаемся получить некоторые результаты JSON, предоставленные частным сторонним WebAPI.По какой-то причине один из вызовов каждый раз возвращает 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 Ответ

1 голос
/ 25 мая 2019

После нескольких попыток я не смог понять, почему метод OLE Automation возвращает значение NULL.Так что в конце концов я построил все, используя SQL CLR, и это сработало.

Я эффективно использовал шаги, описанные по следующей ссылке (со своим собственным подходом):

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

У меня были некоторые проблемы с обучением и некоторые проблемы, с которыми я столкнулся, но я смог их выяснить.Удачи тем, кто подписан, и спасибо тем, кто откликнулся на мой ОП.

...