【发布时间】:2019-10-18 17:27:37
【问题描述】:
在这里找到了一个很棒的答案:Parse JSON from web in SQL Server 2017
我能够从 HTTP 请求获取响应正文到以 JSON 格式响应的 REST API 服务器。 当 API 端点不需要会话 ID 时,这非常有效。
但是我想查询的端点需要一个会话 ID(我已经测试了一个永久 ID,没有任何身份验证问题)。
在 Wireshark 中分析 HTTP 请求时,我可以看到数据包中没有提及我的标头。但是看看当我通过网络浏览器与 API 交互时,我可以看到我的 Session-Id 正在传递。
这是我的 SQL:
Declare @Object as Int;
Declare @Response table (txt nvarchar(max));
Exec sp_OACreate 'MSXML2.serverXMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'GET',
'http://someip/Rest/EndPoint'
Exec sp_OAMethod @Object, 'setRequestHeader',null,'Session-Id','123456789'
Exec sp_OAMethod @Object, 'send'
Insert Into @Response (txt)
Exec sp_OAMethod @Object, 'responseText'
Exec sp_OADestroy @Object
Select txt From @Response
我可以轻松地在 Javascipt(见下文)中实现这一点;但需要在 SQL 中将响应解析为 SQL 表,而无需使用像 NodeJS 这样的中间人并将响应发送到 SQL 服务器。
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.setRequestHeader("Session-Id", "123456789");
任何/所有帮助将不胜感激!
谢谢
【问题讨论】:
标签: sql json sql-server api http