SQL Server 访问URL 调用WebServer

SQL Server 访问URL 调用WebServer

以下整理的SQL Server中访问URL地址的方法,并已封装成存储过程,可以实现POST/GET请求

SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
/**
存储过程发起URL请求

启用 Ole Automation Procedures 选项
exec sp_configure 'show advanced options',1;
go
reconfigure;
go
sp_configure 'Ole Automation Procedures',1;
go
reconfigure;
go
*/
ALTER PROC P_Url_SendRequest
    (
      @Url VARCHAR(8000) = '' ,
      @PostData VARCHAR(8000) = '' ,
      @ResponseText VARCHAR(8000) = '' OUTPUT
    )
AS
    SET NOCOUNT ON 


    DECLARE @ServiceUrl AS VARCHAR(1000) 
    DECLARE @UrlAddress VARCHAR(500) ,
        @ErrMsg VARCHAR(5000)


    SET @ServiceUrl = @Url 

    PRINT @ServiceUrl

    DECLARE @Object AS INT ,
        @status INT ,
        @returnText AS VARCHAR(8000) ,
        @HttpStatus VARCHAR(200) ,
        @HttpMethod VARCHAR(20) = 'get'

    IF ISNULL(@PostData, '') <> ''
        SET @HttpMethod = 'post'

/*初始化对*/                   
    EXEC @status = sp_OACreate 'Msxml2.ServerXMLHTTP.3.0', @Object OUT;
    IF @status <> 0
        BEGIN  
            EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
            SET @ErrMsg = '初始化对象失败,' + @ErrMsg + ISNULL(@returnText, '')
            RAISERROR(@ErrMsg,16,-1)           
            RETURN 1
        END  
/*创建链接*/  
    EXEC @status = sp_OAMethod @Object, 'open', NULL, @HttpMethod, @ServiceUrl,
        'false'
    IF @status <> 0
        BEGIN  
            EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
            SET @ErrMsg = '创建连接失败,' + @ErrMsg + ISNULL(@returnText, '')
            RAISERROR(@ErrMsg,16,-1)           
            RETURN 2
        END  

    SELECT  @HttpMethod

    IF @HttpMethod = 'post'
        BEGIN
            --EXEC @status = sp_OAMethod @Object, 'setRequestHeader',
            --    'Content-Type', 'application/x-www-form-urlencoded'   

            EXEC @status = sys.sp_OAMethod @Object, 'setRequestHeader', NULL,
                'Content-Type', 'application/x-www-form-urlencoded';
        END
    ELSE
        BEGIN

            EXEC @status = sp_OAMethod @Object, 'setRequestHeader', NULL,
                'Content-Type', 'text/xml; charset=gb2312'
            PRINT @status
        END


    IF @status <> 0
        BEGIN  
            EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT

            SET @ErrMsg = '设置RequestHeader属性失败,' + @ErrMsg
                + ISNULL(@returnText, '')
            RAISERROR(@ErrMsg,16,-1)           
            RETURN 2
        END  

    EXEC @status = sp_OAMethod @Object, 'send', NULL, @PostData
    IF @status <> 0
        BEGIN  
            EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT 
            SET @ErrMsg = '发送请求头失败,' + @ErrMsg + ISNULL(@returnText, '')
            RAISERROR(@ErrMsg,16,-1)           
            RETURN 3
        END 


    EXEC @status = sys.sp_OAGetProperty @Object, 'Status', @HttpStatus OUT;

    IF @status <> 0
        BEGIN
            EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT 
            SET @ErrMsg = '读取[Status]属性值失败,' + @ErrMsg + ISNULL(@returnText,
                                                              '')
            RAISERROR(@ErrMsg,16,-1)           
            RETURN 3

        END

    IF @HttpStatus <> 200
        BEGIN
            SET @ErrMsg = '访问错误,http状态代码,' + @HttpStatus
            RAISERROR(@ErrMsg,16,1);
            RETURN -6;
        END


    EXEC @status = sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
    IF @status <> 0
        BEGIN  
            EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
            SET @ErrMsg = '获取回复报文失败,' + ISNULL(@ErrMsg, '')
                + ISNULL(@returnText, '') + ISNULL(@returnText, '')
            RAISERROR(@ErrMsg,16,-1)           
            RETURN 4
        END 

    EXEC @status = sp_OADestroy @Object
    IF @status <> 0
        BEGIN  
            EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
            SET @ErrMsg = '释放资源对象,' + @ErrMsg + ISNULL(@returnText, '')
            RAISERROR(@ErrMsg,16,-1)           
            RETURN 5
        END


    RETURN 0

GO

调用WebServer的实例请参考,另外一位兄弟的博客http://www.cnblogs.com/icycore/p/3532197.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
【图书目录】 - SQL Server 数据库企业应用系统开发<br/>第1部分 SQL Server Web应用概述<br/>第1章 Web应用程序概述<br/>1. 1 Web应用系统的主要特点<br/>1. 2 Web应用程序的体系结构<br/>1. 3 SQL Server2000与Web应用<br/>1. 4 本章小结<br/>第2章 建立Web应用程序的开发环境<br/>2. 1 开发环境的基本要求<br/>2. 1. 1 软件要求<br/>2. 1. 2 硬件要求<br/>2. 2 安装数据库系统Microsoft SQL Server2000<br/>2. 3 安装Web服务器Microsoft IIS<br/>2. 4 安装. NET开发软件<br/>2. 4. 1 安装软件开发包. NET Framework SDK<br/>2. 4. 2 安装开发工具Visual Studio. NET<br/>2. 4. 3 安装开发工具ASP. NET Web Matrix<br/>2. 4. 4 安装XML工具<br/>2. 5 本章小结<br/>第3章 电子商城的系统分析<br/>3. 1 电子商城简介<br/>3. 2 电子商城的功能分析<br/>3. 2. 1 电子商城的管理服务系统<br/>3. 2. 2 电子商城的公共服务系统<br/>3. 3 电子商城的结构分析<br/>3. 3. 1 电子商城的逻辑结构图<br/>3. 3. 2 电子商城的系统实现<br/>3. 4 电子商城的数据库分析<br/>3. 5 本章小结<br/>第2部分 创建电子商城的数据库系统<br/>第4章 使用SQL Server 2000建立电子商城的数据库系统<br/>4. 1 建立电子商城数据库<br/>4. 2 建立电子商城数据库表<br/>4. 2. 1 建立电子商城数据表<br/>4. 2. 2 建立客户数据表<br/>4. 2. 3 建立商品数据表<br/>4. 2. 4 建立订单数据表<br/>4. 3 建立电子商城各数据库表的相互关系<br/>4. 3. 1 建立商城数据关系图<br/>4. 3. 2 建立商品数据关系图<br/>4. 3. 3 建立购物数据关系图<br/>4. 3. 4 建立用户订单数据关系图<br/>4. 3. 5 建立商家供货单数据关系图<br/>4. 4 本章小结<br/>第5章 初始化电子商城数据库<br/>5. 1 初始化基层数据表<br/>5. 1. 1 初始化统计类型表<br/>5. 1. 2 初始化信誉等级表<br/>5. 1. 3 初始化商品类型表<br/>5. 1. 4 初始化付款方式表<br/>5. 1. 5 初始化销售方式表<br/>5. 2 初始化客户输入类数据表<br/>5. 2. 1 初始化商城系统数据表<br/>5. 2. 2 初始化用户表<br/>5. 2. 3 初始化商家表<br/>5. 2. 4 初始化商品信息表<br/>5. 3 关于系统运行类数据表<br/>5. 4 本章小结<br/>第6章 访问电子商城数据库<br/>6. 1 简单查询<br/>6. 2 联接查询<br/>6. 3 使用子查询<br/>6. 4 统计查询结果<br/>6. 5 本章小结<br/>第7章 完备商城数据库的设计<br/>7. 1 使用约束维护商城数据的完整性<br/>7. 1. 1 使用主键约束<br/>7. 1. 2 使用外键约束<br/>7. 1. 3 使用惟一约束<br/>7. 1. 4 使用检查约束<br/>7. 1. 5 使用默认值约束<br/>7. 2 使用触发器维护商城数据的完整性<br/>7. 2. 1 在用户表中创建触发器<br/>7. 2. 2 在商家表中创建触发器<br/>7. 2. 3 在商品信息表中创建触发器<br/>7. 2. 4 在商品类型表中创建触发器<br/>7. 2. 5 在购物筐表中创建触发器<br/>7. 3 本章小结<br/>第3部分 创建电子商城的Web应用程序<br/>第8章 创建ASP. NET网页概述<br/>8. 1 ASP. NET简介<br/>8. 2 电子商城Web应用程序的IIS配置<br/>8. 3 ASP. NETWebMatrix的操作简介<br/>8. 3. 1 新建ASP. NET网页文件<br/>8. 3. 2 打开已有的ASP. NET网页<br/>8. 3. 3 编辑ASP. NET网页<br/>8. 3. 4 为控件添加事件代码<br/>8. 3. 5 预览ASP. NET网页<br/>8. 4 本章小结<br/>第9章 使用ASP. NET创建商城的Web应用界面<br/>9. 1 创建电子商堀主页<br/>9. 2 创建用户管理界面<br/>9. 2. 1 创建用户注册网页<br/>9. 2. 2 创建管理用户信息网页<br/>9. 3 创建商品类型管理界面<br/>9. 3. 1 创建商品类型登记网页<br/>9. 3. 2 创建商品类型查询网页<br/>9. 4 创建商家管理界面<br/>9. 4. 1 创建商家注册网页<br/>9. 4. 2 创建管理商家信息网页<br/>9. 5 创建商品管理界面<br/>9. 5. 1 创建商品类型查询网页<br/>9. 5. 2 创建管理商品信息网页<br/>9. 6 创建购物管理界面<br/>9. 6. 1 创建用户购物网页<br/>9. 6. 2 创建用户订单查询网页<br/>9. 7 本章小结<br/>第10章 使用ADO. NET访问商城数据库<br/>10. 1 ADO. NET概述<br/>10. 1. 1 与ADO. NET相关的命名空间<br/>10. 1. 2 常用的ADO. NET对象<br/>10. 2 网页与电子商城数据库的连接<br/>10. 2. 1 编写连接语句<br/>10. 2. 2 编写执行语句<br/>10. 2. 3 配置统一的连接字符串<br/>10. 2. 4 网页与电子商城数据库的完整连接语句<br/>10. 2. 5 新建商城数据库用户和配置权限<br/>10. 3 实现Web应用对电子商城数据库的访问<br/>10. 3. 1 实现用户注册网页对用户表的写访问<br/>10. 3. 2 实现管理用户信息网页对用户表的读写访问<br/>10. 3. 3 实现商品类型登记网页对商品类型表的写访问<br/>10. 3. 4 实现商品类型查询网页对商品类型表的读访问<br/>10. 3. 5 实现商家注册网页对商家表的写访问<br/>10. 3. 6 实现管理商家信息网页对商家表的读写访问<br/>10. 3. 7 实现商品登记网页对商品信息表的写访问<br/>10. 3. 8 实现管理商品信息网页对商品信息表的读写访问<br/>10. 3. 9 实现商品导购网页对商品信息表的读访问<br/>10. 3. 10 实现结算网页对商品数据库的写访问<br/>10. 3. 11 实现订单查询网页对商品数据库的读访问<br/>10. 4 本章小结<br/>第11章 使用XML访问商城数据库<br/>11. 1 XML概述<br/>11. 1. 1 XML语言<br/>11. 1. 2 XML模板<br/>11. 1. 3 XSL样式表<br/>11. 2 为商城数据库新建虚拟目录<br/>11. 3 使用XML从商城数据库中检索数据<br/>11. 3. 1 直接通过URL访问商城数据库<br/>11. 3. 2 使用XML模板访问商城数据库<br/>11. 3. 3 使用XSL样式表显示XML数据<br/>11. 3. 4 为XML模板添加查询参数<br/>11. 3. 5 在网页中调用XML模板<br/>11. 3. 6 使用XML模板实现用户订单查询<br/>11. 3. 7 使用XML同时查询多个数据表<br/>11. 4 使用XMLupdategram模板更新商城数据库<br/>11. 4. 1 使用XMLupdategram添加记录<br/>11. 4. 2 使用XMLupdategram更新记录<br/>11. 4. 3 使用XMLupdategram删除记录<br/>11. 4. 4 使用XMLupdategram同时执行多种事务<br/>11. 4. 5 向XMLupdategram传递参数<br/>11. 4. 6 在网页中调用XMLupdategram<br/>11. 5 本章小结<br/>第12章 电子商城系统的维护<br/>12. 1 对商城数据库的维护<br/>12. 1. 1 使用数据库维护向导创建维护计划<br/>12. 1. 2 定期备份商蜮数据库<br/>12. 1. 3 定期清理商城数据库<br/>12. 2 对电子商城Web应用程序的维护<br/>12. 2. 1 ASP. NET的配置简介<br/>12. 2. 2 电子商城Web应用程序的配置文件<br/>12. 2. 3 更新应用程序的配置和代码<br/>12. 3 本章小结<br/>
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

madStone_l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值