我想知道如何使用SQL Server存储过程中的Web服务。我有一个表,其中列指定用户的城市和州。我想将此地址作为参数传递给Google地理编码API网络服务并获取经度和纬度。
我已经成功地在c#中使用了这个地理编码api。但是现在,我想在存储过程中使用它。
任何人都可以建议如何完成这项工作?或者请给我任何链接?
任何帮助将不胜感激!
感谢。
答案 0 :(得分:4)
对于这样的事情,您不需要完整的Web服务实现。您可以使用SQLCLR(SQL Server的.NET集成)将请求提交到URL,以XML格式获取响应(除非您可以找到一个可以在没有设置的情况下工作的JSON库到UNSAFE),然后解析那个回复。
查看以下MSDN页面:
根据WebUtility.UrlEncode,API URI的格式应与以下内容类似:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
只需通过HttpWebRequest
将这两个变量替换为正确的值,然后调用HttpWebRequest.GetResponse
,然后调用HttpWebResponse.GetResponseStream
即可。并且不忘记调用Close
的{{1}}和Dispose
方法(或在HttpWebResponse
块中实例化它)!!
附加说明:
using
。只需使用密码对程序集进行签名,然后通过指向已签名的DLL在TRUSTWORTHY ON
数据库中创建非对称密钥,然后从该非对称密钥创建登录,最后授予该登录master
权限。然后,您可以设置程序集UNSAFE ASSEMBLY
。答案 1 :(得分:0)
Omar Frometa有一个如何做到这一点的例子。去这个链接 http://www.codeproject.com/Articles/428200/How-to-invoke-a-Web-Service-from-a-Stored-Procedur
总之,使用这些扩展存储过程:SP_OACreate和SP_OAMethod来访问对象,如MSXML2.ServerXMLHttp。