【发布时间】:2019-12-09 06:22:34
【问题描述】:
我正在尝试将 json 数据发送到 rest API,最好是从 SQL Server 2016。我遇到了以下代码(来自 https://gist.github.com/theorigin/fa3c58406ff7b4565ca2),它使用 sp_OAMethod 并使用 webhook.site 对其进行了测试,所以我知道发送,但我看不到来自 SQL 的 http 响应代码,这是我需要查看的内容...如果提交有问题,相关 API 会发送 400 响应以及错误消息,如果提交有问题,则发送 200一切都是正确的。
SQL 代码在所有场景下都返回 NULL 列。目前,我编写了一个 PHP 应用程序,它为我完成了所有这些工作,只是它不是自动化的。该应用程序通过 csv 文件运行,并一次将 json 一行发送到端点。在我将其更改为查看查询结果而不是 csv 文件之前,以及在我开始考虑将其添加到 cron 作业(或者可能是 Windows 中的计划任务?)之前,我一直想知道我想要实现的目标是否可行使用 SQL Server,这是存储我所有数据的地方。不过,这可能是一个圆形钉子插入一个方孔,如果是这样,那么我会打折这种方法。
DECLARE @Object AS INT;
DECLARE @ResponseText AS VARCHAR(8000);
DECLARE @Body AS VARCHAR(8000) =
'{
"name": "John",
"age": 30,
}'
EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'post','https://webhook.site/1234', 'false'
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'Content-Type', 'application/json'
EXEC sp_OAMethod @Object, 'send', null, @body
EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
SELECT @ResponseText
EXEC sp_OADestroy @Object
理想情况下,我会看到“200”或“400”作为每个请求的响应,并且我可以在存储过程运行后解析它们。
非常欢迎任何帮助或建议。 谢谢
【问题讨论】:
-
所以换句话说 sp_OA 程序是一个坏主意,我应该看看替代方案。 SQL CLR?
-
基本上,是的。这里有一个相关示例:github.com/microsoft/sql-server-samples/tree/master/samples/…
标签: php sql sql-server cron