当前位置:Gxlcms > 数据库问题 > SQL Server 访问URL 调用WebServer

SQL Server 访问URL 调用WebServer

时间:2021-07-01 10:21:17 帮助过:87人阅读

/** 存储过程发起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
declare @ServiceUrl as varchar(1000) 
declare @UrlAddress varchar(500)

--WebService地址:以http开头,结尾带斜杠,例如http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/ 
set @UrlAddress = http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/

declare @FunName varchar(50)
--WebService中调用的方法名:例如getMobileCodeInfo
set @FunName = getMobileCodeInfo   

--以下参数对应WebService中4个参数的[参数名]
declare @P1 varchar(800),@P2 varchar(100)
set @P1 = mobileCode
set @P2 = userid

declare @P1_Value varchar(100),@P2_Value varchar(100)
set @P1_Value = 13800138000
set @P2_Value = ‘‘

set @ServiceUrl = @UrlAddress + @FunName + ? + @P1 + = + @P1_Value +& + @P2 + = + @P2_Value                       
                  
Declare @Object as Int
Declare @ResponseText as Varchar(8000)
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

标签:请求头   var   tomat   info   post   bsp   初始化   services   output   

人气教程排行