/****** Object: StoredProcedure [dbo].[post] Script Date: 2021-06-22 15:11:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[post]
@url nvarchar(max), --api网址
@data nvarchar(max) --参数
as
-- 与对象相关的变量声明.
DECLARE @token INT;
DECLARE @ret INT;
-- 与请求相关的变量声明。
--DECLARE @url NVARCHAR(MAX);
DECLARE @authHeader NVARCHAR(64);
DECLARE @contentType NVARCHAR(64);
DECLARE @apiKey NVARCHAR(32);
--DECLARE @data NVARCHAR(MAX);
-- 与JSON字符串相关的变量声明.
DECLARE @json AS TABLE(Json_Table NVARCHAR(MAX))
-- 设置认证根据实际情况填写
SET @authHeader = 'Bearer **********根据自己实际填入key';
SET @contentType = 'application/x-www-form-urlencoded';
}
}'*/
-- 设置API键,我只是从数据库中的另一个表中获取它.
--SET @apiKey = (SELECT api_key FROM [SigmaCodingDatabase].[dbo].[API_Services] WHERE service_name = 'Alpha Vantage')
-- Define the URL 已经有变量传入 这里可以忽略
--SET @url = 'https://*********填入自己的api网址'
-- 这会创建新对象.
EXEC @ret = sp_OACreate 'MSXML2.XMLHTTP', @token OUT;
IF @ret <> 0 RAISERROR('Unable to open HTTP connection.', 10, 1);
-- 这将调用必要的方法.
EXEC @ret = sp_OAMethod @token, 'open', NULL, 'post', @url, 'false';
EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Authorization', @authHeader;
EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Content-type', @contentType;
EXEC @ret = sp_OAMethod @token, 'send',null,@data
-- 获取responseText属性,并将JSON字符串临时插入到表中。这是非常重要的,如果你不做这个步骤,你会遇到问题。解决传过来字符超过8000限制
INSERT into @json (Json_Table) EXEC sp_OAGetProperty @token, 'responseText'
-- 从我们刚刚插入的Table中选择JSON字符串。您还可以通过这个语句看到整个字符串。
SELECT * FROM @json