添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
/****** Object:  StoredProcedure [dbo].[P_Url_SendRequest]    Script Date: 2021/3/5 19:25:28 ******/
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
-- =============================================
-- Author:        <Author,,Name>
-- Create date: <Create Date,,>
-- Description:    <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[P_Url_SendRequest]
      @Url VARCHAR(8000) = '' ,
      @PostData VARCHAR(8000) = '' ,
      @ResponseText VARCHAR(8000) = '' OUTPUT
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
/*设置超时*/
EXEC sp_OAMethod @Object,'setTimeouts',NULL,8000,8000,8000,8000
/*创建链接*/ 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 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'; BEGIN EXEC @status = sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type', 'text/xml; charset=gb2312' PRINT @status IF @status <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @ErrMsg OUT, @returnText OUT SET @ErrMsg = '设置RequestHeader属性失败,' + @ErrMsg + ISNULL(@returnText, '') RAISERROR(@ErrMsg,16,-1) RETURN 2 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 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 IF @HttpStatus <> 200 BEGIN SET @ErrMsg = '访问错误,http状态代码,' + @HttpStatus RAISERROR(@ErrMsg,16,1); RETURN -6; 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 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 RETURN 0

通过以下语句,开启里面所用组件的支持

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