我想从SQL服务器向Tomcat服务器发送HTTP请求。我已在Tomcat服务器中安装了SQL Server 2012 Express和非.NET应用程序。我已经经历过像从SQL服务器发出HTTP请求这样的过程
正如上面文章中所说,“必须在服务器上安装COM对象WinHttp.WinHttpRequest.5.1,其中一些典型的变化是WinHttp.WinHttpRequest.5”。我已经从winhttp下载链接下载了 winhttp.zip,在zip文件夹中找到了winhttp.dll,并C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn按照此msdn链接中的建议将其粘贴了。
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn
遵循相同的建议,我在SSMS中执行了以下代码:
sp_addextendedproc 'GetHttp', 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2\MSSQL\Binn\winhttp.dll';
我还在SSMS中执行了以下代码,如“从SQL Server链接发出HTTP请求”中所述:
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
然后我得到了错误
消息2010,级别16,状态1,过程GetHttp,第2行 无法在’GetHttp’上执行更改,因为它是不兼容的对象类型。
我不知道如何调用该函数来发送HTTP请求。我认为是这样的GetHttp('http://www.google.co.in/')。
GetHttp('http://www.google.co.in/')
我想念什么?
我通过powershell得到了答案。我所做的是在sql server中打开powershell,然后在powershell中执行了以下代码。
$http_Request= New-Object system.Net.WebClient; $Result = $http_Request.downloadString("url")