sqlserver直接调用webservice,要求传入一个JSON数据,返回的也是一个JSON数据

cy82596908 2017-01-22 10:18:15
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格式又造成了乱码,个人猜测,希望好人再帮忙解决的同时,能给我一个返回简简单单的字符串的参数。
网上真的难找。。
跪谢 !!~
...全文
1367 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Helios77 2019-10-23
  • 打赏
  • 举报
回复
现在解决了吗
hj8090 2017-02-17
  • 打赏
  • 举报
回复
SQL使用CRL函数应该是个不错的方案,或者写个服务程序采集后提交到sql也可以。
u010356473 2017-02-16
  • 打赏
  • 举报
回复
webservice 如果客户端和服务器编码不一致时有乱码的
LongRui888 2017-01-22
  • 打赏
  • 举报
回复
你的sql server是32位,还是64位的,你有完整的存储过程代码吗
cy82596908 2017-01-22
  • 打赏
  • 举报
回复
引用 1 楼 yupeigu 的回复:
这个MSXML2.XMLHTTP 返回的就是xml格式的文件,并不是json格式的。 另外,@ResponseText 的字符类型是什么
代码是网上找来的,并不是我会的,我也一直在找该设为什么值,它能返回字符串,只要返回了字符串就好办多了。
cy82596908 2017-01-22
  • 打赏
  • 举报
回复
引用 2 楼 yupeigu 的回复:
这种webservice操作我觉得用sql server做不太合适,sql server是操作数据的,你用vbscript写个脚本来操作webservice更加合适,而且也可以进行类型转换
混口饭吃,数据库方面只会SQLSERVER,而且公司内部ERP全依赖SQLSERVER,没有办法,我调用外部的天气预报啊,手机归属地啊,都能正确显示字符串,虽然是包含在XML文件里的,只要字符串正确显示,其他解析分分钟的事。 MSXML2.XMLHTTP 返回的就是xml格式的文件,那设为什么值它能返回JSON,或字符串的数据格式 ?? @ResponseText nvarchar(4000)
LongRui888 2017-01-22
  • 打赏
  • 举报
回复
这种webservice操作我觉得用sql server做不太合适,sql server是操作数据的,你用vbscript写个脚本来操作webservice更加合适,而且也可以进行类型转换
LongRui888 2017-01-22
  • 打赏
  • 举报
回复
这个MSXML2.XMLHTTP 返回的就是xml格式的文件,并不是json格式的。 另外,@ResponseText 的字符类型是什么

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧