SQL SERVER 详细API POST存储过程,解决字符超出问题

该博客内容涉及如何利用SQL存储过程进行API调用。具体步骤包括设置认证头、内容类型,通过MSXML2.XMLHTTP对象发送POST请求,并处理返回的JSON响应。此方法适用于后端数据处理和集成API的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/****** 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值