SQLserver 远程调用API接口

   最近公司要搞手机APP主动告警推送,本来想通过后台做个自动程序干这件事,定时推送,但是这样做一些告警推送消息不能够及时推送给用户。

  仔细想了一下,如果每一条告警记录我都能及时发现并及时推送,岂不是更及时更准确,因为告警记录是通过采集程序解析后及时插入数据库的。所以,如果我在告警记录表里建一个Inset 模式的触发器,然后在触发器中通过数据库远程调用API接口,做消息推送岂不是很好。(关于触发器的介绍,看我以前写的就行了 https://www.cnblogs.com/zpy1993-09/p/12152971.html

 触发器建立后,就附带数据库远程调用API接口的数据库代码就行了。

   这里为了验证推送,传入死数据就行了。话不多说,上代码:

declare @ServiceUrl as varchar(1000) 
declare @UrlAddress varchar(500) 
set @UrlAddress = 'http://远程接口IP/wapi/JZ/'

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

--以下参数对应WebService中4个参数的[参数名]
declare @WorkID varchar(100),@ExplainContent varchar(100),@Uid varchar(100),@IsAssignTask varchar(100)
set @WorkID = 'WorkID'
set @ExplainContent = 'ExplainContent'

set @Uid = 'Uid'
set @IsAssignTask = 'IsAssignTask'
declare @P1_Value varchar(100),@P2_Value varchar(100),@P3_Value varchar(100),@P4_Value varchar(100)
set @P1_Value = 56261
set @P2_Value = '123213'
set @P3_Value = 309
set @P4_Value = 1

set @ServiceUrl = @UrlAddress + @FunName + '?' + @WorkID + '=' + @P1_Value +'&' + @ExplainContent + '=' + @P2_Value +'&' + @Uid + '=' + @P3_Value +'&' + @IsAssignTask + '=' + @P4_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

 

   执行后结果:

 

posted @ 2020-07-15 10:39  代码如风~~~  阅读(2370)  评论(0编辑  收藏  举报