首页 > 数据库 >SQL Server——发起HTTP请求

SQL Server——发起HTTP请求

时间:2022-09-22 14:38:12浏览次数:46  
标签:VARCHAR EXEC token Server json SQL HTTP 8000 DECLARE

什么?SQL Server也是编程语言。能够发起HTTP通信。

第一步 开启sqlServer通信组件

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

第二步 查看组件状态 (不报错就说明开启成功了)

EXEC sp_configure 'Ole Automation Procedures';
GO 

第三步 http请求方法

CREATE PROCEDURE http_tool
    (
      @httpType VARCHAR(8000) ,
      @contentType VARCHAR(8000) ,
      @authHeader VARCHAR(8000) ,
      @url VARCHAR(8000) ,
      @data VARCHAR(8000) ,
      @json VARCHAR(8000) OUTPUT
    )
AS
    BEGIN
        DECLARE @Status INT;
        DECLARE @responseText VARCHAR(8000);
        EXEC sp_OACreate 'MSXML2.ServerXMLHTTP', @Status OUT;
        EXEC sp_OAMethod @Status, 'Open', NULL, @httpType, @url, 'false';
        EXEC sp_OAMethod @Status, 'setRequestHeader', NULL, 'Authorization',
            @authHeader;
        EXEC sp_OAMethod @Status, 'setRequestHeader', NULL, 'Content-type',
            @contentType;
        EXEC sp_OAMethod @Status, 'send', NULL, @data;
        EXEC sp_OAMethod @Status, 'responseText', @responseText OUTPUT;

        SET @json = @responseText;
    END;
GO

第四步 简单的json解析器

CREATE PROCEDURE json_tool
    (
      @json VARCHAR(8000) ,
      @key VARCHAR(8000) ,
      @value VARCHAR(8000) OUTPUT
    )
AS
    BEGIN
        DECLARE @keyLenght INT = LEN(@key);
        DECLARE @keyIndex INT= CHARINDEX(@key, @json, 0);
        SET @keyIndex = @keyIndex + @keyLenght + 3;
        DECLARE @jsonLenght INT= LEN(@json);
        --掐头
        SET @json = SUBSTRING(@json, @keyIndex, @jsonLenght);
        DECLARE @valueEnd INT = CHARINDEX('"', @json, 0);
        --去尾
        SET @value = SUBSTRING(@json, 0, @valueEnd);
    END
GO

第五步 测试

/*获取 含有 token 的 json*/

--获取token的地址
DECLARE @url_get_token VARCHAR(500)= 'https://XXXXXX/api-uaa/oauth/user/token';
DECLARE @token_json VARCHAR(8000);
--
EXEC http_tool 'POST', 'application/x-www-form-urlencoded',
    'Basic Xxxxxxxxxxxxxxxxxxxx', @url_get_token,
    'username=sa&password=123', @token_json OUTPUT;

/*解析 得到 token*/
DECLARE @token VARCHAR(800);
--
EXEC json_tool @token_json, 'access_token', @token OUTPUT;

标签:VARCHAR,EXEC,token,Server,json,SQL,HTTP,8000,DECLARE
From: https://www.cnblogs.com/luyj00436/p/16719119.html

相关文章

  • PostgreSQL与Greenplum之区别
    一、区别:(1)Greenplum是用于报告、分析、机器学习、人工智能和高并发SQL的大规模并行数据库的开源软件。Greenplum以PostgreSQL为基础,Greenplum数据库被描述为以MP......
  • MySql 数据备份
    相关命令的执行都在windows服务器下,且工作目录就是mysqlserver的bin目录下.1、mysqldump全备份mysqldump-h127.0.0.1-u用户名-p"密码"数据库名称有表的话写表......
  • Mysql 修改数据存放目录
    1、关闭Mysql服务2、修改my.ini文件修改datadir路径至新目录,并且将原来的Data目录拷贝至新目录修改secure-file-priv路径至新目录,并且将原来的Uploads文件夹贝至新目......
  • 配置允许MySQL授权允许root用户远程连接
    1.纯MySQL服务的环境下,都是少不了需要root用户登陆的情况,一般情况下MySQL都是在开放本地连接,需要开放远程连接的话需要用户自行设置1.本文使用的是MySQL的版本为MySQL8.0,版......
  • SQL Server 锁机制 悲观锁 乐观锁 实测解析
     一、为什么会有锁多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:1.丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个......
  • Mysql的explain详解
    使用mysql提供的explain命令来查询sql语句的执行计划,查看sql语句有没有使用上索引,有没有全表扫描等。expain出来的信息有12列,分别是,id,select_type,table,partitions,type,possi......
  • python生成sql server 数据库表名和sql脚本
    #-*-coding:utf-8-*-#作者:TY#时间:2020-08-0522:03#文件名称:sqlserver数据库导表脚本.PY#开发工具:PyCharmimportpymssqlimportosclassSQLServer:......
  • 【SQLServer 】SQLServer健康报告
    使用:1.创建存储过程:usp_SQLhealthcheck_report2.执行存储过程executeusp_SQLhealthcheck_report3.输入mail地址(可选项)4.保存结果输出格式:HTML(支持将html以邮件附件的......
  • 【SQLServer】SQLServer执行计划概览
    在本系列文章中,我们将纵览SQLServer执行计划的海洋,从定义执行计划的概念开始,遍历执行计划的类型、组件和运算符,分析执行计划,最后我们将介绍如何保存和管理执行计划。当你......
  • MySQL常用命令
    MySQL基础1.创建数据库createdatabaseshop;#使用库useshop;2.创建表createtableuser(id intprimarykey,namechar(10))ENGINE=InnoDBDEFAULTCHARSET=u......