0

我正在从 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。

我试过的:

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

任何有助于调试的建议将不胜感激。

4

1 回答 1

0

我使用 IP 地址调用 AWS 中的服务,但没有成功。当我将其更改为使用主机名时,它就起作用了。我不知道为什么。

于 2017-09-19T10:21:36.400 回答