sqlserver直接调用webservice,要求传入一个JSON数据,返回的也是一个JSON数据
exec sp_configure 'show advanced options', 1
RECONFIGURE;
exec sp_configure 'Ole Automation Procedures', 1
RECONFIGURE;
----------------------------------------------------------------------------------
--开始调用之前的拼接参数
declare @ServiceUrl as varchar(1000)
if isnull(@p3,'') = ''
set @ServiceUrl = @url + @funname + '&' + @p1 + '=' + @v1 +'&' + @p2 + '=' + @v2
else
set @ServiceUrl = @url + @funname + '&' + @p1 + '=' + @v1 +'&' + @p2 + '=' + @v2+'&' + @p3 + '=' + @v3
Declare @Object as Int
--开始执行调用webservice
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
Exec sp_OADestroy @Object
------------------------------------------------------------------
--关闭调用webservice权限
exec sp_configure 'show advanced options', 0
RECONFIGURE;
现在封装为存储过程了,以上为存储过程中的一段,比较关键的一段,初步调用结果是成功的,不过也就是调用调用天气预报,手机归属地查询,这些和实际中的调用中,出现了一些问题,
1、比如我传递的类似STRING格式的数据,到服务器端部分会变为乱码、
2、服务器端方法返回的是一个JSON数据格式,也可以理解为一个字符串,不仅收到的是乱码,另一个更糟的问题,传回来的字符串是XML格式的,我只需要返回字符串的格式,不想要XML格式的。(服务器端方法返回的是一个JSON格式数据)
找了好多天网上各种方法,均未成功,只好寄托在CSDN的大神身上了,小弟愿将所有分献上,以祈求一个答案,大概200分,请勿嫌弃,工作饭碗要不保了,还希望有这方面经验的能帮帮小弟,渡过这次难关,好人一生平安 !~
个人分析认为是以上代码中红色字的哪行代码的第一个参数MSXML2.XMLHTTP,限定了以XML格式为返回格式,强行将服务器端返回的JSON格式的数据转换成XML格式的数据了,导致的返回值为XML格式又造成了乱码,个人猜测,希望好人再帮忙解决的同时,能给我一个返回简简单单的字符串的参数。
网上真的难找。。
跪谢 !!~