如何通过SQL(OLE自动化)调试无法调用Web服务?

时间:2017-09-19 10:18:14

标签: sql sql-server web-services amazon-web-services ole-automation

我从SQL调用Web服务。这可能听起来很奇怪,但是,这就是我正在做的事情。

我的代码可以调用在线(公共)Web服务(HTTP GET),但是当我尝试在同一AWS环境(也是HTTP GET)中调用服务时,该服务不会被调用,而我得到一个空白的回复。

以下是有效的代码:

DECLARE @Object as int;
DECLARE @ResponseText as varchar(8000);

DECLARE @URL as varchar(200) = 'https://democraticintelligence.org/home/ping'

EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'get',
    @URL, 
    'false'
EXEC sp_OAMethod @Object, 'send'
EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT

SELECT @ResponseText

当我在AWS中调用我的服务替换@URL时,该服务无法被调用,我得到一个空白的@ResponseText。

我尝试过的事情:

  • 通过将网址粘贴到Chrome中,从数据库服务器调用网络服务,工作正常。
  • 通过将网址粘贴到Chrome中,从我的电脑上调用网络服务,工作正常。
  • 在本地PC上从SQL调用Web服务失败。
  • 在AWS中的数据库服务器上从SQL调用Web服务失败。

任何有助于调试的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我正在使用IP地址来调用AWS中的服务,但该服务无效。当我改变它以使用主机名,然后它工作。我不知道为什么。