SQL Server Web Servis Çağırma
SQL Server Web Servis Çağırma
Bu yazıda sizler ile SQL Server’da web servis çağırma işlemini anlatacağım fakat bu işlemi anlatmadan önce web servisi kısa ve basit olarak açıklamak istiyorum, web servis: bize ait verileri bizim haricimizdeki kaynaklar ile paylaşmamızı sağlayan bir yöntemdir, iki kaynak arasında veri alış verişi sağlar. Burada oldukça basit bir tanım yaptım çünkü bu yazıyı okuyorsanız daha fazlasını biliyorsunuz demektir.
1. SQL Serverda Ayarları
SQL Server da web servis çağırmadan önce aşağıdaki ayarları yapmanız gerekmektedir. Bu ayarlardan sonra web servis çağırma işlemini yapabileceğiz. Bu ayarların ne işe yaradığını aşağıda açıklamıştır.
Use master sp_configure 'show advanced options', 1; RECONFIGURE sp_configure 'Ole Automation Procedures', 1; RECONFIGURE sp_configure 'show advanced options', 1; RECONFIGURE;
sp_configure
sp_configure sytem prucedure
geçerli sunucu için ayarları görüntüler ve bu yarlarda değişiklik yapmanızı sağlar.
‘option_name’ ve ‘value’ şeklinde iki parametre alabilir.
RECONFIGURE
sunucunun yediden yapılandırılmasını sağlar."show advanced option"
gelişmiş seçeneklerin ayarlanması sağlar."Ole Automation Procedures"
Ole otomasyon sisteminin kullanılması için açılır.
"show advanced option"
seçeneği 1 olarak ayarlandığında bu ayar tüm kullanıcılar için geçerlidir. Bu durumu geçici olarak kullanmanız önerilir.
2. OLE Automation Procedures
sp_OACreate
Bir OLE nesnesinin örneğini oluşturmanıza olanak tanır. ve yeni oluşturulan OLE nesnesi, Transact-SQL deyimi toplu işleminin sonunda otomatik olarak yok edilir.
sp_OACreate { progid | clsid } , objecttoken OUTPUT [ , context ]
sp_OAMethod
Bir OLE nesnesinin yöntemini çağırmanıza izin verir.
sp_OAMethod objecttoken , methodname [ , returnvalue OUTPUT ] [ , [ @parametername = ] parameter [ OUTPUT ] [ ...n ] ]
sp_OADestroy
Oluşturulan bir OLE nesnesini yok eder. sp_OACreate yönteminde belirtildiği gibi eğer sp_OADestroy çağrılmazsa oluşturulan OLE nesnesi toplu işlemin sonunda otomatik olarak yok edilir. Şimdi yukarıdaki metotları kullanarak bir servis çağıralım ve bu servisi bir sp haline getirelim.
sp_OADestroy objecttoken
3. Servisin Yazılması
Aşağıda Microsoft SQL serverda yazmış olduğumuz servisimizi bir procedure haline getirdik. Başka spyi işlemlerde de kullnabiliriz.
CREATE proc [dbo].[spHTTPRequest_ali] @URI varchar(2000) , @methodName varchar(50) , @requestBody varchar(8000) , @responseText varchar(8000) output AS SET NOCOUNT ON IF @methodName = '' BEGIN select FailPoint = 'Method Name must be set' RETURN END DECLARE @Object AS INT DECLARE @hResult int DECLARE @source varchar(255), @desc varchar(255) EXEC @hResult = sp_OACreate 'MSXML2.XMLHTTP', @Object OUT IF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT SELECT hResult = convert(varbinary(4), @hResult), source = @source, description = @desc, FailPoint = 'XMLHTTP Create failed', MedthodName = @methodName GOTO destroy RETURN END EXEC @hResult = sp_OAMethod @Object, 'open', NULL, @methodName ,@URI, 'false' IF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT SELECT hResult = convert(varbinary(4), @hResult), source = @source, description = @desc, FailPoint = 'XMLHTTP Open failed', MedthodName = @methodName GOTO destroy RETURN END EXEC @hResult = sp_OAMethod @Object, 'setRequestHeader', null, 'Content-Type', 'application/json' IF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT SELECT hResult = convert(varbinary(4), @hResult), source = @source, description = @desc, FailPoint = 'SetRequestHeader failed', MedthodName = @methodName GOTO destroy RETURN END EXEC @hResult=sp_OAMethod @Object, 'send', null, @requestBody IF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT SELECT hResult = convert(varbinary(4), @hResult), source = @source, description = @desc, FailPoint = 'Send failed', MedthodName = @methodName GOTO destroy RETURN END EXEC @hResult= sp_OAMethod @Object, 'responseText', @responseText OUTPUT IF @hResult <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @source OUT, @desc OUT SELECT hResult = convert(varbinary(4), @hResult), source = @source, description = @desc, FailPoint = 'ResponseText failed', MedthodName = @methodName GOTO destroy RETURN END IF CHARINDEX('false',(SELECT @responseText)) > 0 BEGIN SELECT @responseText As 'Message' END ELSE BEGIN SELECT @responseText As 'Employee Details' END destroy: EXEC sp_OADestroy @Object
4. Servisin Çağrılması
exec spHTTPRequest @URI = 'http://.-----------------------', @methodName = 'Post', @requestBody = '{ "OrderID": "1000", "customergln": "1", "ProductGtin": "86", "processid": "E", "lotnumber": "A", "expiredate": "2023-06-03", "ProductionDate": "2021-10-15T00:00:00", "Quantity": 9899, "StartDate": "2021-10-13T00:00:00" }', @responseText ='' ;
Servisimizi çağırdık ve gelen sonucu sizler ile paylaştım.
- @URI -> Servis adresiniz
- @methodName -> Method tipi
- @requestBody -> İstek veri
- @responseText -> Servis cevabı
Elinize sağlık güzel bir yazı oomuş
is tadalafil safe
SQL Server Web Servis Çağırma – Türkmühendis.net