PL/SQL WEB SERVICE (UTL_HTTP) İLE VERİ ÇEKMEK

Share Button

Bu yazımda PL/SQL kullanarak bir Web Service’den nasıl veri çekebileceğimizi inceleyeceğim. Oracle veritabanı üzerinden dış kaynaklara talep gönderebilmek için UTL_HTTP paketi kullanılmalıdır. Bu yazıda örnek Web Service olarak e-posta doğrulayan bir Web Service kullanılacaktır. Web Service Link: http://ws.cdyne.com/emailverify/Emailvernotestemail.asmx?wsdl

Kodumuzun başında kod içersinde kullacağımız lokal değerleri tanımlama ve gerekiyorsa değer atama işlemini yapmalıyız. Bu noktada iki adet UTL_HTTP paket değerine ihtiyacımız vardır. UTL_HTTP.REQ talep göndermek için kullanacağımız paket değeri iken, UTL_HTTP.RESP ise Web Service’ten talep ettiğimizde bize dönen XML cevabı almak için kullanacağımız değerdir.

REQUEST_ENV talep gönderme durumunda kullanılan parametreli SOAP zarfı için kullanılacaktır. RESPONSE_ENV ise dönen cevabı içermektedir. Bu dönen cevabı daha sonradan CLOB tipine dönüştürüp, CLOB_RESPONSE içine koyacağız.

Program başladığında CLOB alanı kullanabilmemiz için geçici büyük obje alanı yaratmamız gerekmektedir. Bunun için aşağıdaki kod parçası kullanılır.

REQUEST_ENV içerisine ilgili SOAP zarfını yerleştirdikten sonra, UTL_HTTP paketi içerisindeki BEGIN_REQUEST fonksiyonunu kullanarak ilgili WSDL linkinden talebi başlatıyoruz. Talep başladıktan sonra varsa OPTIONAL olarak başlık bilgilerini giriyoruz. UTL_HTTP.WRITE_TEXT ile talebi UTL_HTTP paketinden oluşturduğumuz HTTP_REQ içine yazıyoruz.

UTL_HTTP.GET_RESPONSE ile de Web Service’e gönderdiğimiz zarfın cevabını alıyoruz. İlk aşamada cevabı RESP değerine atıyoruz. Daha sonradan içersindeki text’i (XML) CLOB olarak ayıklıyoruz.

Bütün Kod;