Я хотел отправить HTTP-запрос с сервера SQL на сервер Tomcat. Я установил приложение SQL Express 2012 Express и не .NET на сервере Tomcat. Я прошел через это как Сделать HTTP-запрос с SQL-сервера
Как сказано в этой статье, "COM-объект WinHttp.WinHttpRequest.5.1 должен быть установлен на сервере, некоторые типичные варианты - WinHttp.WinHttpRequest.5".
Я загрузил winhttp.zip из winhttp download link, нашел winhttp.dll в папке zip и вставил его в C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn
, как предложено в этом ссылка msdn.
Следуя тому же совету, я выполнил следующую строку в SSMS:
sp_addextendedproc 'GetHttp',
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn\winhttp.dll';
Я также выполнил следующий код в SSMS, как сказано в "Сделать HTTP-запрос из ссылки SQL Server":
Alter function GetHttp
(
@url varchar(8000)
)
returns varchar(8000)
as
BEGIN
DECLARE @win int
DECLARE @hr int
DECLARE @text varchar(8000)
EXEC @hr=sp_OACreate 'WinHttp.WinHttpRequest.5.1',@win OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAMethod @win, 'Open',NULL,'GET',@url,'false'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAMethod @win,'Send'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAGetProperty @win,'ResponseText',@text OUTPUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OADestroy @win
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
RETURN @text
END
Затем я получаю ошибку
Msg 2010, уровень 16, состояние 1, процедура GetHttp, строка 2
Невозможно выполнить изменение в 'GetHttp', потому что это несовместимый тип объекта.
Я не знаю, как вызвать функцию отправки HTTP-запроса. Я предполагаю, что это что-то вроде этого GetHttp('http://www.google.co.in/')
.
Что мне не хватает?