Web Service Uygulaması

Slides:



Advertisements
Benzer bir sunumlar
Bilgisayar Ağları ve İnternet
Advertisements

8. SINIF 3. ÜNİTE BİLGİ YARIŞMASI
HTML e GİRİŞ Temel HTML etiketleri.
WEB TASARIM Temel Kavramlar.
Özel Site.NET İnternet Nedir? Soner Sevindik.
IIS 6.0. Giriş  Geçtiğimiz yıllarda, Microsoft güvenlik açıkları nedeniyle IIS 4/5 üstünden bir çok saldırıya uğradı.  Bu sebepten Microsoft’un geliştirdiği.
Değişkenler ve bellek Değişkenler
NOKTA, DOĞRU, DOĞRU PARÇASI, IŞIN, DÜZLEMDEKİ DOĞRULAR
 Bir iletişim mimarisidir.  Bir DTD si yoktur.  Roy Fielding 2000 Yılında ortaya atmıştır.  En başarılı Rest Uyarlamalarından biri HTTP protokolüdür.
Web Servis Destekli Bütünleşik Hesap Yönetimi
WEB SERVİSLERİ: Internet Devriminde İkinci Aşama?
WEB SERVİCE İDRİS YÜRÜK MAHMUT KAYA.
WSDL -SOAP Murat tezgider
TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU
WEB Tasarımı & .NET Bolum 1
E-TİCARET.
Web Host Manager (WHM) Nedir Ne İşe Yarar ?
İNTERNET.
İNTERNET VE İLETİŞİM.
WEB SERVİS TEKNİK SUNUM
Veri ve Veri Yapıları Genel olarak bilgisayarlar.
Programlama-II (Java ile Bilgisayar Programlama)
04/02/10 Django Web Uygulamaları Geliştirmede Çağdaş bir Yaklaşım.
İNTERNETİN TEMEL KAVRAMLARI
UTL_MAIL basit ve etkili çözüm
PL/SQL üzerinden Web Sayfası üretmek
Çevre ve Orman Bakanlığı Bilgi İşlem Dairesi Başkanlığı
Proxy-DNS Nedir?.
Dizi (array) değişkenleri
Ankara Üniversitesi Açık Arşiv Uygulaması
Bilgisayar Mühendisliği Bölümü Bilgi Servisleri (IS) GRID Kullanıcı Eğitimi Boğaziçi Üniversitesi 2007, İstanbul Emrah AKKOYUN.
VERİ TABANI ve YÖNETİMİ
XML TEKNOLOJİLERİ BTP 206. Ders İçin Gerekli Olan Ders Kitabı –XML, Zafer Demirkol, Pusula Yayınları Yardımcı Ders Kitabı –XML How To Program, Deitel.
XML Genişletilebilir İşaretleme Dili (eXtensible Markup Language), hem insanlar hem bilgi işlem sistemleri tarafından kolayca okunabilecek dokümanlar oluşturmayı.
Temel HTML Eğitimi Erman Yükseltürk.
IT 504 İnternet ve Web Programlama Tanıtım Yrd. Doç. Yuriy Mishchenko.
TEMEL İNTERNET KAVRAMLARI
Büyük Risk Bilgisayar Ağları Network Soru-Cevap 1 Bilgisayar Ağları
YONT 172 BİLGİ TEKNOLOJİLERİNE GİRİŞ II
FERHAT KADİR PALA SACİDE GÜZİN MAZMAN
XML Document Object Model (DOM)
İnternet Teknolojisi Temel Kavramlar
İnternet Teknolojisi Temel Kavramlar
WEB TASARIMINDA TEMEL KAVRAMLAR
BTEP 203 – İnternet ProgramcIlIğI - I
Chapter 8: Advanced Method Concepts
Bilgisayar Programlama
T.C. MİLLİ EĞİTİM BAKANLIĞI Büro Yönetimi Öğretmeni Fatma GEZ BALIKESİR / BANDIRMA – İLÇE MİLLİ EĞİTİM MÜDÜRLÜĞÜ Büro Yönetimi ve Resmi Yazışma Kuralları.
XML ve XML Teknolojileri
FONKSİYONLAR İbrahim Onur Sığırcı.
RAISE RECORD/CURSOR TRIGGER
Toplama Yapalım Hikmet Sırma 1-A sınıfı.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Amaçlar Bu derste öğrenilecekler: –Uygulamaları “method”
ÖĞR. GRV. Ş.ENGIN ŞAHİN BİLGİ VE İLETİŞİM TEKNOLOJİSİ.
İnternet Teknolojisi Temel Kavramlar
Chapter 5. Ağ Protokolleri
İKMAP İnternet 1 Ders Notu
VERİ ERİŞİM ARABİRİMİ PROGRAMLAMA DİLLERİ KENDİ OLANAKLARIYLAVERİTABANI ERİŞİMİNİ TAM ANLAMIYLA GERÇEKLEŞTİREMEZLER. BU NEDENLE VERİ ERİŞİM ARABİRİMİ (DATA.
ADI: Ayşe GEÇKİL NO: Atom, “feeds” olarak bilinen bilgilerle ilgili listeleri açıklayan XML’e dayalı bir belge biçimidir. Bu dosyanın oluşturulmasındaki.
Modül 1: Giriş. Genel Bakış Temel.NET kavramları Geliştirme ortamında gezinti Bir C# projesi oluştur Use Visual Studio.NET Veriye eriş Hata ayıkla ve.
Windows İşletim Sistemlerinde Yetkilendirme
KIRKLARELİ ÜNİVERSİTESİ
XML ve XML WEB SERVİSLERİ Volkan ALTINTAŞ. XML Bağımsız bir kuruluş olan W3C tarafından tasarlanmıştır. Herhangi bir kurumun tekelinde değildir. Kişilerin.
Asp.Net Veritabanı İşlemleri
Dünyanın bilgisine açılan pencere...
DOMAIN SERVER DOMAIN NEDIR ?
Temel Internet Kullanımı Y. Doç. Dr. M. Sıtkı İlkay Ekim 2006.
Dünyanın bilgisine açılan pencere...
FONKSİYONLAR İbrahim Onur Sığırcı.
Milli Eğitim Bakanlığı Eğitek Haydar TUNA Teknik Öğretmen ve Yazar
Sunum transkripti:

Web Service Uygulaması Temel Web Service özellikleri ve Oracle PL/SQL ile web servis çağırmak. Ümit Varol / Diveya Bilgi Sistemleri 04/12/2009 - İstanbul

Web Servis Nedir? Web servisler, web teknolojisi üzerinde çalışan veri yayınlama ve veri toplama araçlarıdır. Web servisler, açık protokolleri kullanır ve çok temel olarak XML ve HMTL yapılarıyla çalışır. Web servisler, herhangi bir uygulamanızı internet tabanlı bir uygulamaya dönüştürür ve herhangi bir uygulamanın, sizin uygulamanıza internet üzerinden ulaşmasını sağlar. XML yapısında oluşturulan sorular ve cevaplar ile çalışır. Public Internet SOAP XML f(x) XML Service Requester Service Provider İstanbul'10 20 Mayıs 2010

İçerik Web Servis nedir, nasıl çalışır ? Örnek Web Servis senaryosu. Web Servis Response ve Request mesajlarının yapısı. Örnek Kod. UTL_HTTP nedir, nasıl çalışır. Örnek Web Servis senaryosu, devam! PL/SQL Örnek Kod. Notlar. İstanbul'10 20 Mayıs 2010

Neden Web Servis? Birlikte çalışabilirliği çok yüksektir. Her platformda ve en az kaynakla üretilmesi ve bakım desteği mümkündür. Web servisler çok yaygın olarak bilinen açık protokollerini kullanır, veriyi paketlemek için XML, taşımak için SOAP gibi. Web servisleri kullanarak, uygulamanız içindeki fonksiyonlarınızı veya uygulamanızda ürettiğiniz mesajlarınızı dünyanın geri kalanına yayınlayabilirsiniz. Çok çeşitli uygulamalar geliştirebilirsiniz. (Bilet Sorgulama, İlk 10 listesi, Sipariş Alma, Anında Tercüme gibi) Farklı ortamlardaki, tamamen birbirinden farklı yapıdaki sistemlerin veri paylaşımı için ideal bir iletişim aracıdır. Bu nedenle son zamanlarda en çok kullanılan entegrasyon biçimidir. İstanbul'10 20 Mayıs 2010

Web Service Nasıl Çalışır? Web hizmetleri platformu elemanları: SOAP (Simple Object Access Protocol, Basit Nesne Erişim Protokolü) WSDL (Web Services Description Language, Web Servis Tanımlama Dili) UDDI (Universal Description, Discovery and Integration, Evrensel Tanım, Keşif ve Entegrasyon) UDDI Service Broker WSDL WSDL Public Internet SOAP XML f(x) XML Service Requester Service Provider İstanbul'10 20 Mayıs 2010

SOAP Nedir? Simple Object Access Protocol, Basit Nesne Erişim Protokolü SOAP, HTTP üzerinden bilgi paylaşımı için kullanılan XML tabanlı bir protokoldür. Ya da kısaca, web servislere bağlanmak için kullanılan protokoldür. Çok özetle SOAP, bir iletişim protokolüdür. İnternet üzerinden iletişim kurmak için tasarlanmıştır. Kolay kullanılabilir bir mesaj gönderme yöntemidir. Hem platform bağımsız hem de dil bağımsızdır. SOAP, XML tabanlıdır, basittir ve genişletilebilir. SOAP ile firewall sorununuz en azdır. SOAP bir W3C standardıdır. Daha detaylı bilgi için W3C’nin sitesini ziyaret edebilirsiniz. Http://www.w3c.com Http://www.w3schools.com/w3c/w3c_soap.asp İstanbul'10 20 Mayıs 2010

SOAP Nedir? Herhangi bir SOAP mesajının 3 temel elemanı vardır : Envelope Header (Zorunlu değil) Body Temel olarak bir SOAP mesajı 3 şekilde oluşabilir : Metod Çağırımı Cevap Mesajı Hata Mesajı Metod çağırma mesajı da temel olarak 2 amaçla kullanılabilir : Get : Bilgi almak için Set : Bilgi göndermek için SOAP : ENVELOPE SOAP : HEADER SOAP : BODY İstanbul'10 20 Mayıs 2010

WSDL nedir? Web Services Description Language, Web Servis Tanımlama Dili WSDL, web servisleri tanımlamak için kullanılan XML tabanlı bir dildir. WSDL, web servislerin içeriğini tanıtır. WSDL, web servislerin bulunmasını sağlar. Bir çok uygulama geliştirme ortamı tarafından otomatik algılanır. WSDL bir W3C standardıdır. Daha detaylı bilgi için W3C’nin sitesini ziyaret edebilirsiniz. Http://www.w3.org/TR/wsdl İstanbul'10 20 Mayıs 2010

UDDI nedir? Universal Description, Discovery and Integration Evrensel Tanım, Keşif ve Entegrasyon UDDI, kurumların web servislerini kaydettikleri ve başka web servisleri aradıkları bir dizin servisidir. UDDI, web servisler hakkında bilgilerin bulunduğu bir dizindir. UDDI, web servislerin WSDL tanımlama arayüzlerinin bulunduğu bir dizindir. UDDI, SOAP aracılığı ile çalışır. UDDI servisi Microsoft .NET platformu içindedir. Daha detaylı bilgi için W3C’nin WSDL sitesini ziyaret edebilirsiniz. Http://www.w3.org/TR/wsdl Http://www.w3schools.com/wsdl/wsdl_uddi.asp İstanbul'10 20 Mayıs 2010

Örnek Senaryo Çağıracağımız web servisin URL tanıtım adresi ile açıklama sayfasına veya WSDL dosyasına ulaşabiliriz. Elde ettiğimiz WSDL ile kendi uygulamamızı otomatik veya kendimiz geliştirebiliriz. Uygulamamız HTTP erişimine olanaklı yazılım ve ağ altyapısında olmalıdır. Çağrılacak metoda uygun XML formatında talep mesajı gönderilmelidir. Gelen XML formatındaki cevap çözümlenerek işlenebilir. 1 Application URL Application WSDL 2 SOAP ENVELOPE Public Internet SOAP BODY Request 4 3 SOAP ENVELOPE f(x) f(x) 5 SOAP BODY Response Service Requester Service Provider İstanbul'10 20 Mayıs 2010

Örnek Kod / Response Çağıracağımız web servisi sağlayacak kurumdan elde ettiğimiz URL ile bir web tarayıcısından ilgili sayfaya ulaşarak aldığımız bilgi aşağıdaki gibi olabilir. POST /ws_DEMO/ws_DEMO.asmx HTTP/1.1 Host: 192.168.10.10 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://192.168.10.10/DEMO_Siparis_FNC" Bu servis “POST” metodu ile istekte bulunulacak ve “HTTP/1.1” standardı ile haberleşilecektir. Web servis, ilgili domain altında “/ws_DEMO/ws_DEMO.asmx” adresinde bulunmaktadır. Web servisinin bulunduğu sunucu “192.168.10.10” adresindedir. Web servisi içinde SOAP standardına uygun olarak istekte bulunulacak fonksiyonun adresi ise "http://192.168.10.10/DEMO_Siparis_FNC" şeklindedir. Son olarak göndereceğimiz mesajın uzunluğuda “length” bilgisi ile bildirilmelidir. SOAP ENVELOPE SOAP BODY Request “URL Header” bilgileri İstanbul'10 20 Mayıs 2010

Örnek Kod / Response Çağıracağımız web servisi sağlayacak kurumdan elde ettiğimiz URL ile bir web tarayıcısından ilgili sayfaya ulaşarak aldığımız bilgi aşağıdaki gibi olabilir. <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <DEMO_Siparis_FNC xmlns="http://192.168.10.10/"> <siparis_no>int</siparis_no> <siparis_tarihi>string</siparis_tarihi> <kalem_kodu>string</kalem_kodu> <siparis_adedi>int</siparis_adedi> </DEMO_Siparis_FNC> </soap:Body> </soap:Envelope> SOAP ENVELOPE SOAP BODY Request f(x) İstanbul'10 20 Mayıs 2010

Örnek Kod / Request Çağıracağımız web servisi sağlayacak kurumdan elde ettiğimiz URL ile bir web tarayıcısından ilgili sayfaya ulaşarak aldığımız bilgi aşağıdaki gibi olabilir. HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length Bir URL request gönderdiğimiz için mutlaka bir URL request oluşacaktır. İstekte bulunacağımız Web servise gelecek cevap yine “HTTP/1.1” standardında olacaktır. Gelen cevapla birlikte, web sunucusunun geri döndürdüğü bir durum kodu olacaktır. Bu durum kodu yine genel bir standart olarak eğer “200” ise web sunucusundan sağlıklı olarak cevap dönmüş demektir. Buradan dönen 200 değeri, sadece sağlıklı bir cevap alacağınız anlamına gelir, çağrılan Web servis ile yapılmak istenen işlemin neticesini gösteren bir cevap değildir. Web servis ile yapılan işlem neticesinde oluşan cevap ise alacağınız mesajın içerisinde gelecektir. Web servisin sağlıklı cevap vermemesi durumunda ise genellikle 500 değeri döner, bunun dışında da muhtelif, bir çok hata kodu bulunmaktadır. Http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html SOAP ENVELOPE “URL Header” bilgileri SOAP BODY Response İstanbul'10 20 Mayıs 2010

Örnek Kod / Request Çağıracağımız web servisi sağlayacak kurumdan elde ettiğimiz URL ile bir web tarayıcısından ilgili sayfaya ulaşarak aldığımız bilgi aşağıdaki gibi olabilir. <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <DEMO_Siparis_FNCResponse xmlns="http://192.168.10.10/"> <DEMO_Siparis_FNCResult>string</DEMO_Siparis_FNCResult> </DEMO_Siparis_FNCResponse> </soap:Body> </soap:Envelope> SOAP ENVELOPE SOAP BODY Response f(x) İstanbul'10 20 Mayıs 2010

Örnek Kod / Request Web servisin sorunsuz olarak çalıştığı ve bir cevap ürettiği durumda, size dönecek cevap aşağıdaki gibi olacaktır. <soap:Body> <DEMO_Siparis_FNCResponse xmlns="http://192.168.10.10/"> <DEMO_Siparis_FNCResult>string</DEMO_Siparis_FNCResult> </DEMO_Siparis_FNCResponse> </soap:Body> Web servisin olası bir hata veya geçersiz parametreden kaynaklı olarak hata ile tamamlanması durumda ise size dönecek cevap aşağıdaki gibi olacaktır. Bu noktadan sonra yapılması gereken, gelen cevabı bir XML Parser ile çözerek elde edeceğiniz cevabı yorumlamaktır. SOAP ENVELOPE SOAP BODY Response İstanbul'10 20 Mayıs 2010

UTL_HTTP Nedir? HTTP – Hyper Text Markup Language, Zengin Metin İşaretleme Dili HTML aracılığıyla PL/SQL’den dış ortamlara ulaşmayı sağlar. Bu paket ile internet üzerinden farklı sistemler üzerindeki verilere erişebilirsiniz. Bu paket ayrıca HTTPS olarak da bilinen HTTP üzerinden SSL, Secure Socket Layer protokolünüde desteklemektedir. Bu paket ile doğrudan veya HTTP proxy üzerinden bir web sayfasına bağlanabilirsiniz. Standart Oracle kütüphanesidir (7.3.4’den itibaren) [ORACLE_HOME] / rdbms / admin / utlhttp.sql İstanbul'10 20 Mayıs 2010

UTL_HTTP Nasıl Çalışır? UTL_HTTP paketi ile doğrudan bir web sitesine ulaşmanın iki basit yolu vardır. UTL_HTTP.Request Bu fonksiyon tüm web sitesini tek bir String olarak döndürür. declare t_result varchar2(4000); begin t_result := utl_http.request('http://www.demo.com/index.html'); -- t_result ile istediğiniz işlemi yapın end; UTL_HTTP.Request_Lines Bu fonksiyon ise web sitesini bir PL/SQL tablosu gibi döndürür. declare t_part utl_http.html_pieces; begin     t_part := utl_http.request_lines('http://www.demo.com/index.html');     for i in 1 .. t_part.count loop         -- t_part(i) ile istediğiniz işlemi yapın;     end loop; İstanbul'10 20 Mayıs 2010

UTL_HTTP Nasıl Çalışır? UTL_HTTP paketinin temel akış şeması: Request Response İstanbul'10 20 Mayıs 2010

UTL_HTTP Nasıl Çalışır? UTL_HTTP paketi ile bir URL’den HTTP ile istekte bulunmak için, Request Begin_Request( url IN VARCHAR2, method IN VARCHAR2 DEFAULT 'GET', http_version IN VARCHAR2 DEFAULT NULL) RETURN HTTP_Request_Type; Set_Header( req IN OUT NOCOPY HTTP_Request_Type, name IN VARCHAR2, value IN VARCHAR2 DEFAULT NULL ); Write_Text( req IN OUT NOCOPY HTTP_Request_Type, data IN VARCHAR2 CHARACTER SET ANY_CS ); End_Request (req IN OUT NOCOPY HTTP_Request_Type); Response Get_Response( req IN OUT NOCOPY HTTP_Request_Type, return_info_response IN BOOLEAN DEFAULT FALSE) RETURN HTTP_Response_Type; Read_Text( resp IN OUT NOCOPY HTTP_Response_Type, data OUT NOCOPY VARCHAR2 CHARACTER SET ANY_CS, len IN PLS_INTEGER DEFAULT NULL ); End_Response (resp IN OUT NOCOPY HTTP_Response_Type); f(x) SOAP ENVELOPE SOAP BODY Request f(x) SOAP ENVELOPE SOAP BODY Response İstanbul'10 20 Mayıs 2010

Örnek Senaryo, Devam! f(x) f(x) f(x) Çağıracağımız web servis için gereken parametreleri içeren bir fonksiyon ile içeriği oluşturabiliriz. Oluşturduğumuz içeriği XML formatında düzenleyerek bir String değişken içine atabiliriz. Oluşturduğumuz XML talep mesajını iletmek için bir SOAP Envelope oluşturmalıyız. Artık mesajımızı karşı tarafa gönderebiliriz. Application Application Public Internet URL SOAP ENVELOPE f(x) 1 SOAP BODY Request SOAP ENVELOPE Service Requester f(x) 2 SOAP BODY Response Service Provider f(x) İstanbul'10 20 Mayıs 2010

Örnek Senaryo, Devam! f(x) f(x) İstanbul'10 Application Application <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <DEMO_Siparis_FNC xmlns="http://192.168.10.10/"> <siparis_no>int</siparis_no> <siparis_tarihi>string</siparis_tarihi> </DEMO_Siparis_FNC> </soap:Body> </soap:Envelope> Application Application Public Internet URL SOAP ENVELOPE f(x) 1 SOAP BODY Request Service Requester f(x) Service Provider SOAP ENVELOPE Declare l_envelope_req VARCHAR2(1000); SOAP BODY Request İstanbul'10 20 Mayıs 2010

UTL_HTTP ile Request! UTL_HTTP paketi ile bir URL’den HTTP ile istekte bulunmak için, Request Begin_Request( url IN VARCHAR2, method IN VARCHAR2 DEFAULT 'GET', http_version IN VARCHAR2 DEFAULT NULL) RETURN HTTP_Request_Type; l_httl_request := UTL_HTTP.Begin_Request( ‘http://192.168.10.10/ws_DEMO/ws_DEMO.asmx’ , ’POST’ , ’HTTP/1.1’ ); Set_Header( req IN OUT NOCOPY HTTP_Request_Type, name IN VARCHAR2, value IN VARCHAR2 DEFAULT NULL ); UTL_HTTP.set_header( l_httl_request, 'Content-Type', 'text/xml; charset=utf-8'); UTL_HTTP.set_header( l_httl_request, 'Content-Length', LENGTH( l_envelope_req )); UTL_HTTP.set_header( l_httl_request, 'SOAPAction', 'http://192.168.10.10/DEMO_Siparis_FNC'); Write_Text( req IN OUT NOCOPY HTTP_Request_Type, data IN VARCHAR2 CHARACTER SET ANY_CS ); UTL_HTTP.write_text( l_httl_request, l_envelope_req ); İstanbul'10 20 Mayıs 2010

Örnek Senaryo, Devam! f(x) f(x) İstanbul'10 Application Application <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <DEMO_Siparis_FNCResponse xmlns="http://192.168.10.10/"> <DEMO_Siparis_FNCResult>string</DEMO_Siparis_FNCResult> </DEMO_Siparis_FNCResponse> </soap:Body> </soap:Envelope> Application Application Public Internet f(x) SOAP ENVELOPE Service Requester f(x) 2 SOAP BODY” Response Service Provider SOAP ENVELOPE Declare l_envelope_resp VARCHAR2(1000); SOAP BODY” Response İstanbul'10 20 Mayıs 2010

UTL_HTTP ile Response! UTL_HTTP paketi ile isteğimize verilen cevabı PL/SQL ortamında almak, Response Get_Response(req IN OUT NOCOPY HTTP_Request_Type, return_info_response IN BOOLEAN DEFAULT FALSE) RETURN HTTP_Response_Type; l_http_response := UTL_HTTP.get_response( l_httl_request ); Read_Text(resp IN OUT NOCOPY HTTP_Response_Type, data OUT NOCOPY VARCHAR2 CHARACTER SET ANY_CS, len  IN PLS_INTEGER DEFAULT NULL ) UTL_HTTP.read_text ( l_http_response, l_envelope_resp); End_Response(resp IN OUT NOCOPY HTTP_Response_Type) UTL_HTTP.end_response( l_http_response); HTTP Status Kontrolü (200, 500, vs..) stcd := l_http_response.status_code İstanbul'10 20 Mayıs 2010

Örnek Senaryo, Devam! Elde ettiğimiz XML formatındaki cevabı çözümlemek için aşağıdaki gibi bir çalışma yapabiliriz. l_response := XMLTYPE.createxml( l_envelope_resp); l_response := l_response.extract ('/Soap:Envelope/Soap:Body/child::node()', 'xmlns:Soap="http://schemas.xmlsoap.org/soap/envelope/"'); l_http_st_code := l_http_response.status_code; if l_http_st_code = 200 then DBMS_OUTPUT.put_line(‘Servis Başarı ile Çağrıldı.’); DBMS_OUTPUT.put_line(l_response.getstringval()); elsif l_http_st_code = 500 then DBMS_OUTPUT.put_line(‘Servis Cevap Döndüremedi.’); else DBMS_OUTPUT.put_line(‘Servise Ulaşılamadı!’); end if; SOAP ENVELOPE XML Declare l_response VARCHAR2(1000); SOAP BODY” Response İstanbul'10 20 Mayıs 2010

Kodlara Genel Bakış İstanbul'10 Declare l_envelope_resp VARCHAR2(32767); l_envelope_req VARCHAR2(32767); l_httl_request UTL_HTTP.req; l_http_response UTL_HTTP.resp; l_response XMLTYPE; l_http_st_code VARCHAR2(10); Begin l_httl_request := UTL_HTTP.Begin_Request( ‘http://192.168.10.10/ws_DEMO/ws_DEMO.asmx’ , ’POST’ , ’HTTP/1.1’ ); UTL_HTTP.set_header( l_httl_request, 'Content-Type', 'text/xml; charset=utf-8'); UTL_HTTP.set_header( l_httl_request, 'Content-Length', LENGTH( l_envelope_req )); UTL_HTTP.set_header( l_httl_request, 'SOAPAction', 'http://192.168.10.10/DEMO_Siparis_FNC'); UTL_HTTP.write_text( l_httl_request, l_envelope_req ); l_http_response := UTL_HTTP.get_response( l_httl_request ); UTL_HTTP.read_text ( l_http_response, l_envelope_resp); UTL_HTTP.end_response( l_http_response); l_response := XMLTYPE.createxml( l_envelope_resp); l_response := l_response.extract ('/Soap:Envelope/Soap:Body/child::node()', 'xmlns:Soap="http://schemas.xmlsoap.org/soap/envelope/"'); l_http_st_code := l_http_response.status_code; if l_http_st_code = 200 then DBMS_OUTPUT.put_line(‘Servis Başarı ile Çağrıldı.’); DBMS_OUTPUT.put_line(l_response.getstringval()); elsif l_http_st_code = 500 then DBMS_OUTPUT.put_line(‘Servis Cevap Döndüremedi.’); else DBMS_OUTPUT.put_line(‘Servise Ulaşılamadı!’); end if; End; İstanbul'10 20 Mayıs 2010

Notlar UTL_HTTP 45 adet fonksiyon içeren bir pakettir. Diğer özelliklerinide incelemek faydalı olacaktır. XMLTYPE Oracle tarafından sunulan ve XML verileri işlemeyi kolaylaştıran geliştirilmiş bir veri tipidir. Veri içeriğinin bazı fonksiyonlar yardımı ile kullanımına olanak sağlar. HTML Status kodları ile ilgili W3.org sitesinden, http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html VARCHAR2 tipinin PL/SQL içindeki boyutu 32767 byte olabilmekle birlikte veritabanında sadece 4000 byte olabiliyor. Bu detaya dikkat etmek faydalı olacaktır. İstanbul'10 20 Mayıs 2010