以下整理的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() = '' ,
@PostData VARCHAR() = '' ,
@ResponseText VARCHAR() = '' OUTPUT
) AS
SET NOCOUNT ON DECLARE @ServiceUrl AS VARCHAR()
DECLARE @UrlAddress VARCHAR() ,
@ErrMsg VARCHAR() SET @ServiceUrl = @Url PRINT @ServiceUrl DECLARE @Object AS INT , @status INT ,
@returnText AS VARCHAR() ,
@HttpStatus VARCHAR() ,
@HttpMethod VARCHAR() = 'get' IF ISNULL(@PostData, '') <> ''
SET @HttpMethod = 'post' /*初始化对*/
EXEC @status = sp_OACreate 'Msxml2.ServerXMLHTTP.3.0', @Object OUT;
IF @status <>
BEGIN
EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
SET @ErrMsg = '初始化对象失败,' + @ErrMsg + ISNULL(@returnText, '')
RAISERROR(@ErrMsg,,-)
RETURN
END /*创建链接*/
EXEC @status = sp_OAMethod @Object, 'open', NULL, @HttpMethod, @ServiceUrl,
'false'
IF @status <>
BEGIN
EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
SET @ErrMsg = '创建连接失败,' + @ErrMsg + ISNULL(@returnText, '')
RAISERROR(@ErrMsg,,-)
RETURN
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 <>
BEGIN
EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT SET @ErrMsg = '设置RequestHeader属性失败,' + @ErrMsg
+ ISNULL(@returnText, '')
RAISERROR(@ErrMsg,,-)
RETURN
END
EXEC @status = sp_OAMethod @Object, 'send', NULL, @PostData
IF @status <>
BEGIN
EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
SET @ErrMsg = '发送请求头失败,' + @ErrMsg + ISNULL(@returnText, '')
RAISERROR(@ErrMsg,,-)
RETURN
END EXEC @status = sys.sp_OAGetProperty @Object, 'Status', @HttpStatus OUT; IF @status <>
BEGIN
EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
SET @ErrMsg = '读取[Status]属性值失败,' + @ErrMsg + ISNULL(@returnText,
'')
RAISERROR(@ErrMsg,,-)
RETURN
END IF @HttpStatus <>
BEGIN
SET @ErrMsg = '访问错误,http状态代码,' + @HttpStatus
RAISERROR(@ErrMsg,,);
RETURN -;
END EXEC @status = sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
IF @status <>
BEGIN
EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
SET @ErrMsg = '获取回复报文失败,' + ISNULL(@ErrMsg, '')
+ ISNULL(@returnText, '') + ISNULL(@returnText, '')
RAISERROR(@ErrMsg,,-)
RETURN
END
EXEC @status = sp_OADestroy @Object
IF @status <>
BEGIN
EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT
SET @ErrMsg = '释放资源对象,' + @ErrMsg + ISNULL(@returnText, '')
RAISERROR(@ErrMsg,,-)
RETURN
END
RETURN GO
declare @ServiceUrl as varchar()
declare @UrlAddress varchar() --WebService地址:以http开头,结尾带斜杠,例如'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/'
set @UrlAddress = 'http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/' declare @FunName varchar()
--WebService中调用的方法名:例如'getMobileCodeInfo'
set @FunName = 'getMobileCodeInfo' --以下参数对应WebService中4个参数的[参数名]
declare @P1 varchar(),@P2 varchar()
set @P1 = 'mobileCode'
set @P2 = 'userid' declare @P1_Value varchar(),@P2_Value varchar()
set @P1_Value = ''
set @P2_Value = '' set @ServiceUrl = @UrlAddress + @FunName + '?' + @P1 + '=' + @P1_Value +'&' + @P2 + '=' + @P2_Value Declare @Object as Int
Declare @ResponseText as Varchar()
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get',@ServiceUrl,'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT Select @ResponseText
Exec sp_OADestroy @Object
GO

SQL Server 访问URL 调用WebServer的更多相关文章

  1. Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙

    原文:Chapter 1 Securing Your Server and Network(6):为SQL Server访问配置防火墙 原文出处:http://blog.csdn.net/dba_hu ...

  2. SQL点滴15—在SQL Server 2008中调用C#程序

    原文:SQL点滴15-在SQL Server 2008中调用C#程序 T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可 ...

  3. 在SQL Server 2008中调用.net,dll

    原文:在SQL Server 2008中调用.net,dll T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可以在SQ ...

  4. [转] sql server 跨数据库调用存储过程

    A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( ) =null , ) =null ) AS BEGIN select N'A' AS a , N'B' ...

  5. 动态下载 Yahoo 网络数据存入 Microsoft SQL Server 再 Matlab 调用的一个完整例子

    % 编程环境: Matlab 2014a, win7 32bit, Microsoft SQL Server 2008r2 %% % 清屏 clc; clear all; close all; %% ...

  6. SQL Server 2008R2 :远程调用失败 的解决方法(全部方法)

    SQL 中远程调用失败的原因 1.服务里面的启动权限未能启动,修改sql对应的服务进程权限就可以了 2.是因为VS 和SQL 起冲突了,数据库找不到访问地址导致的.解决的办法很简单,就是卸载掉多余的版 ...

  7. SQL Server访问MySql

    使用环境:操作系统:window7数据库:SQL Server2005.MySql5.01.在安装了SQL Server的服务器上安装MySql的ODBC驱动:下载链接:http://dev.mysq ...

  8. Sql Server 数据库中调用dll文件

    1.首先新建一个空的解决方案,并添加一个类库,代码如下,编译并生产dll using System; using System.Collections.Generic; using System.Da ...

  9. sql server 跨数据库调用存储过程

    A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( ) =null , ) =null ) AS BEGIN select N'A' AS a , N'B' ...

随机推荐

  1. 使用Visual Studio Code调试React Native报错

    报错信息: [Error] Error: Unknown error: not all success patterns were matched. It means that "react ...

  2. seajs 使用文档

    // seajs 的简单配置seajs.config({    base: "/scripts/",    alias: {        "jquery": ...

  3. LintCode: Longest Words

    C++ class Solution { public: /** * @param dictionary: a vector of strings * @return: a vector of str ...

  4. IDEA 之 “There is no configured/running web-servers found!...”

    首次配置 IDEA 2017.1.1 与 Tomcat9.0 的 java 开发环境. 在配置成功并创建第一个 Web Application(3.1) 项目后,运行或调试正常运行. 直接在 jsp ...

  5. 微信小程序 - 分包加载(分包使用)

    使用分包(建议主包添加跳转路径,分包放内容) 在app.json配置"subpackages" 在pages同级目录新建文件夹以及文件 打包原则 声明 subpackages 后, ...

  6. Go语言类型转换库【github.com/demdxx/gocast】的用法

    一.导入库: go get github.com/demdxx/gocast 二.测试代码: // main.go package main import ( "fmt" &quo ...

  7. Python 字典(联合内存、联合数组)

    字典 Python有一个内建数据类型是字典(Dictionaries).字典在某些语言中可能称为“联合内存”("associative memories'')或“联合数组”("as ...

  8. sublime text执行PHP代码

    新建编译系统 { "cmd": ["php", "$file"], "file_regex": "php$&q ...

  9. python2和python3网络访问包

    python3 import http.client import urllib.parse python2 import httplib import urllib

  10. PHP中使用ActiveMQ实现消息队列

    前面我们已经学了怎样部署ActiveMQ. 我们知道通过ActiveMQ的一个管理后台能够查看任务队列. 今天 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...