我想知道如何從SQL Server存儲過程使用web服務。我有一個表格,列中指定了用戶的城市和州。我想將此地址作爲參數傳遞給Google Geocoding API Web服務並獲取經緯度。如何從SQL Server存儲過程調用webservice
我已經在c#中成功地使用了這個地理編碼api。但是現在,我想在存儲過程中使用它。
任何人都可以請建議如何做到這一點?或者請給我提供任何鏈接?
任何幫助將不勝感激!
謝謝。
我想知道如何從SQL Server存儲過程使用web服務。我有一個表格,列中指定了用戶的城市和州。我想將此地址作爲參數傳遞給Google Geocoding API Web服務並獲取經緯度。如何從SQL Server存儲過程調用webservice
我已經在c#中成功地使用了這個地理編碼api。但是現在,我想在存儲過程中使用它。
任何人都可以請建議如何做到這一點?或者請給我提供任何鏈接?
任何幫助將不勝感激!
謝謝。
Omar Frometa舉例說明了如何做到這一點。去這個鏈接 http://www.codeproject.com/Articles/428200/How-to-invoke-a-Web-Service-from-a-Stored-Procedur
總之,使用這些擴展存儲過程:SP_OACreate和SP_OAMethod訪問對象,如MSXML2.ServerXMLHttp。
對於這樣的事情,您不需要完整的Web服務實現。您可以使用SQLCLR(SQL Server的.NET集成)將請求提交到URL,並以XML格式返回響應(除非您可以找到一個JSON庫,它將工作而不會將設置爲UNSAFE),然後解析該響應。
請看下面的MSDN網頁:
根據該Google Geocoding API documentation,該API URI應類似格式化爲以下:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
只是提交與這些2個變量經由HttpWebRequest
與它們適當的值取代,則調用HttpWebRequest.GetResponse
,然後致電HttpWebResponse.GetResponseStream
。忘記調用Close
和Dispose
方法HttpWebResponse
(或在using
塊中實例化它)!
其他注意事項:
TRUSTWORTHY ON
。只需使用密碼簽署程序集,然後通過指向已簽名的DLL在master
數據庫中創建非對稱密鑰,然後從該非對稱密鑰創建登錄,最後授予該登錄的UNSAFE ASSEMBLY
權限。然後你可以設置程序集WITH PERMISSION_SET = EXTERNAL_ACCESS
。
這似乎不是SQL Server本身應該處理的工作 - 這是您在應用程序服務器上用C#編寫的應用程序和/或服務層的工作.... –