Скрипт создания функции:
CREATE FUNCTION [dbo].[HTTPRequest] ( @postData nvarchar(max) )
RETURNS nvarchar(500)
AS
BEGIN
Declare @Object as Int;
Declare @ResponseText as nvarchar(500);
Declare @ResponseError as int;
DECLARE @source varchar(255), @desc varchar(255)
Exec @ResponseError = sp_OACreate 'MSXML2.ServerXMLHTTP', @Object OUT ;
IF @ResponseError <> 0 BEGIN
EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
RETURN '1 ' + @desc;
END
Exec @ResponseError = sp_OAMethod @Object, 'open', NULL, 'post',
'http://localhost/<base>/hs/<rootUrl>/', 'false', '<user>', '<password>';
IF @ResponseError <> 0 BEGIN
EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
RETURN '2 ' + @desc;
END
EXEC @ResponseError = sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded; charset=utf-8';
IF @ResponseError <> 0 BEGIN
EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
RETURN '3 ' + @desc;
END
Exec @ResponseError = sp_OAMethod @Object, 'send', NULL, @postData;
IF @ResponseError <> 0 BEGIN
EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
RETURN '4 ' + @desc;
END
Exec @ResponseError = sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT;
IF @ResponseError <> 0 BEGIN
EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT
RETURN '5 ' + @desc;
END
Exec sp_OADestroy @Object;
RETURN @ResponseText
END
В скрипте необходимо указать свои данные подключения к HTTP сервису: URL, логин и пароль. Параметр функции - строка которую необходимо передать сервису. Возвращает строку полученную от сервиса либо ошибку.
Для проверки можно выполнить следующие команды со своим параметром:
Declare @ResponseText as nvarchar(max);
SET @ResponseText = dbo.HTTPRequest('zzz=yyy');
PRINT(@ResponseText);
Функционал тестировался в следующей конфигурации:
Microsoft Windows 2008 R2
Microsoft SQL Server Standard Edition (64-bit) 10.50.6529.0
1С:Предприятие 8.3 (8.3.9.2309)
Управление небольшой фирмой (1.2.3.71)