Sqlserver呼叫api 方法及示例
雖然使用sqlserver去呼叫服務介面的情況比較少,但也可以去了解下對應的使用情況
一、首先要開啟元件的配置
按 Ctrl+C 複製程式碼
按 Ctrl+C 複製程式碼
二、呼叫webservice
1、介面資訊獲取
呼叫webservice的時候建議使用fiddler去獲取一下發送資料過程用contenttype的型別以及呼叫介面的資料
2、使用sqlserver呼叫對應的介面以及結果
declare @ServiceUrl as varchar(1000) set @ServiceUrl = 'http://localhost:19930/LoginWebService.asmx/Login' DECLARE @data varchar(max); set @data='username=8&password=7' Declare @Object as Int Declare @ResponseText AS varchar(1000) ; Exec sp_OACreate 'Msxml2.ServerXMLHTTP.3.0', @Object OUT; Exec sp_OAMethod @Object, 'open', NULL, 'POST',@ServiceUrl,'false' Exec sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type','application/x-www-form-urlencoded' Exec sp_OAMethod @Object, 'send', NULL, @data --傳送資料 Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT EXEC sp_OAGetErrorInfo @Object --異常輸出 Select @ResponseText Exec sp_OADestroy @Object GO
三、呼叫webapi
兩者呼叫的方式基本如出一轍
1、介面資訊獲取
同樣使用fiddler獲取介面呼叫資訊(因為該介面是GET就不需要看所傳的引數)
2、介面呼叫以及結果
GET操作
declare @ServiceUrl as varchar(1000) set @ServiceUrl = 'http://xxxxx.com/beijing/139/1000000/TaxInfo?token=6d83d2adcff64594bd68614b6ae9e1c8' DECLARE @data varchar(max); set @data='' Declare @Object as Int Declare @ResponseText AS varchar(8000) ; Exec sp_OACreate 'Msxml2.ServerXMLHTTP.3.0', @Object OUT; Exec sp_OAMethod @Object, 'open', NULL, 'GET',@ServiceUrl,'false' Exec sp_OAMethod @Object, 'send', NULL, @data --傳送資料 Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT EXEC sp_OAGetErrorInfo @Object --異常輸出 Select @ResponseText Exec sp_OADestroy @Object GO
POST操作
按 Ctrl+C 複製程式碼
按 Ctrl+C 複製程式碼
示例:
declare @ServiceUrl as varchar(1000)
set @ServiceUrl = 'http://36.33.216.237:8081/c/dict/getAllInstitutions' --restful api 介面
DECLARE @data varchar(max);
set @data='' --入參
Declare @Object as Int
Declare @ResponseText AS varchar(8000) ;
Exec sp_OACreate 'Msxml2.ServerXMLHTTP.3.0', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'POST',@ServiceUrl,'false'
Exec sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-Type','application/json;charset=UTF-8'
Exec sp_OAMethod @Object, 'send', NULL, @data --傳送資料
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
--EXEC sp_OAGetErrorInfo @Object --異常輸出
Select @ResponseText as Response
Exec sp_OADestroy @Object
GO