雖然使用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