1. 程式人生 > >Sqlserver呼叫api 方法及示例

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