欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL执行WebService

程序员文章站 2022-04-28 21:57:59
写了一个钉钉发送消息的类, 要发送用友等审核单据信息, 模式: 钉钉发消息功能在webservice中, 用友消息列表中有新消息时,采用触发器执行webservice. 在测试中 ,功能正常 ,但将在汉字发送到手机端后,显示乱码. 其实这种模式不合理, 这个乱码问题也不解决了.下面是触发器中的代码: ......

写了一个钉钉发送消息的类, 要发送用友等审核单据信息, 

模式: 钉钉发消息功能在webservice中, 用友消息列表中有新消息时,采用触发器执行webservice. 

在测试中 ,功能正常 ,但将在汉字发送到手机端后,显示乱码. 

其实这种模式不合理, 这个乱码问题也不解决了.下面是触发器中的代码:

use [ufdata_001_2016]
go
/****** object:  storedprocedure [dbo].[richen_message_send]    script date: 11/30/2018 08:03:51 ******/
set ansi_nulls on
go
set quoted_identifier on
go
-- =============================================
-- author:        <李孝徽>
-- create date: <2018-11-05>
-- description:    <单据在提交审批时,调用webservice向钉钉发送通知消息
--               在传入参数时,需要用户id和消息内容 ,最后没使用原因:读数据库发出去消息到钉钉时中文乱码.    >
-- =============================================
alter procedure [dbo].[richen_message_send]
    @userid varchar(30),   
    @content varchar(200)
as

begin
    set nocount on;

    declare @serviceurl nvarchar(1000) 
    declare @urladdress nvarchar(100)
 
    --webservice地址:以http开头,结尾带斜杠
    set @urladdress = 'http://192.168.0.7/richen_ws/dd_ws.asmx/'
 
    declare @funname nvarchar(30)--webservice中调用的方法名
    set @funname = 'send_dd'   
 
    --以下参数对应webservice中参数的[参数名]
    declare @p1  nvarchar(30),@p2  nvarchar(30)
    set @p1='userid'
    set @p2='content'
  
    --参数赋值
    declare @p1_value nvarchar(30),@p2_value  nvarchar(200)
    set @p1_value=@userid
    set @p2_value=@content
    set @serviceurl = @urladdress + @funname  + '?' + @p1 +'='+ @p1_value +'&' + @p2 + '=' +@p2_value 
 
    --select  @serviceurl --调试时查看拼接结果
 
    ----访问地址执行获取结果
    declare @object as int
    declare @responsetext as nvarchar(4000)                   
    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

end