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