C# HttpWeb Request ile Web Servis Kullanımı
Herkese merhaba., Bu yazıda sizlere C# HTTPWebRequest ile Web servis kullanımını anlatacağım. Bu yazıdan sonra C# ile web servislerimize verilerimizi post edeceğiz ve gelen verilere göre işlemler yapabileceğiz.Öncelikle web servis kullanımı niçin önemlidir. Bu soruyu cevaplamalıyız bence.
Örnek verecek olursak programınız ile internet üzerindeki bir veritabanınıza veri eklemek veya oradan veri çekmek istiyorsunuz. Bunun için işlemi yaptığınız yerde veritabanınızın yolu bilgileri ve şifresi olması gerekir. Yani veritabanı bilgilerinizi programın içine yazmanız gerekir. Buşekilde o kadar tehlikeli biş iş yapmış olursunuz ki sisteminiz için farkında bile olmadan sisteminizi çökertebilirler.
Çünkü .Net tabanlı sistemlerin güvenlik açığından dolayı kodları ele geçiriliyor. Bunu .Net reflector tarzı programlar ile yapabiliyorsunuz. Şimdi kullanıcı .Net reflector ile programınızın kaynak kodlarını ele geçirdiğinde veritabanı bilgilerinizide ele geçirmiş olacaktır. Sonrasını anlatmayayım isterseniz. İstediği herşeyi yapabilir.
Bu tarz istenmeyen durumlar için veritabanı bilgilerinizi programa yazmamanız gerekir. Bu durumda ise Web Servisler devreye girer.
Web Servisler sayesinde veritabanı bilgilerinizi internet üzerindeki bir dosyaya yazarsınız ve işlemlerinizi orada yaparsınız. Tabiiki her zaman dediğim gibi web servis dosyalarınızı akıllı bir şekilde kodlamanız gerekmektedir. Yoksa kaynak kodlara ulaşan kişi web servis dosyasının yolunuda ele geçirir. Eğer doğru kodlanmamışsa yine sisteminize zarar verebilir.
Bu yazıda C# dili ile web servislerimizle nasıl iletişim kuracağımızı öğreneceğiz.
Öncelikle Aşağıdaki kütüphaneyi programımıza dahil etmemiz gerekiyor.Bu kütüphane ile Web işlemlerini yapabiliyoruz
using System.Net;
using System.IO;
Not: Web servis yazmayacağız ve var olan bir web servise bağlanacağız.
İsterseniz ilk olarak web servis kodlarına bakalım. Başka bir yazıda da kullandığım il adını girip bölgesini getiren basit bir web servis dosyasını kullanacağız.
<?php
if(isset($_POST['il'])) $sehir = $_POST['il']; else $sehir="";
if($sehir == "") echo "Şehir Girmelisiniz!!!";
else if ($sehir == "mersin") echo "Akdeniz Bölgesi";
else if ($sehir == "kocaeli") echo "Marmara Bölgesi";
else if ($sehir == "izmir") echo "Ege Bölgesi";
?>
Yukarıda PHP dilinde yazdığım basit bir web servis görüyorsunuz. Bu dosyaya verilerimizi post edeceğiz ve girdiğimiz il adına göre bize gölgesini yazacak.
Web servis kısmında bir sorun kalmadıysa şimdi sırada C# kodlamasına geçelim. Parça Parça anlatıp en son olarak fonksiyonu yazacağım.
WebRequest request = WebRequest.Create("web servisinizin yolu");
Web request nesnesini oluşturduk. Şimdi Bunun yapılandırma ayarlarını girelim. Eğer web servis dosyasına erişim için bir giriş yetkilendirmesi gerekiyorsa onuda aşağıdaki gibi ekleyeceğiz.
request.Credentials = CredentialCache.DefaultCredentials;
Bu bilgiyide ayarladığımıza göre sırada User Agent ayarlamak var. UserAgent niçin önemlidir diye soracak olursanız bazı hosting sağlayıcıları isteğin nerden geldiğini bilmediği zaman dosyanın erişimine izin vermez. Yani bu bir nevi güvenlik önlemidir. Fakat bu iki şekilde aşılır.
((HttpWebRequest)request).UserAgent = "Bir User Agent Adı örn. Mozilla 5.0";
header('Access-Control-Allow-Origin: *');
Bunu ayarladığımıza göre şimdi sırada veriyi web servise nasıl göndereceğimizi ayarlamamız gerekiyor.
request.Method = "POST";
Bunun iki metodu vardır. POST ve GET. Genelde post şeklinde gönderilir. Sayfamızdada POST şeklinde kontrol ettik. Eğer gönderdiğimiz verinin türünü belirtmek istiyorsanız aşağıdaki kod ile belirtebilirsiniz :
request.ContentType = "application/json";
Biz burada application/json şeklinde gönderdik. Çok fazla örnek var veri tipleriyle ilgili. Örnek olarak : text/html, application/json, application/x-www-form-urlencoded şiklinde çok fazla örnek var.
Buraya kadar web servis nesnemizin yapılandırılmasını yaptık ve bundan sonra artık nesnemizi çalıştırıp gelen cevabı okumalıyız. Bunu ise aşağıdaki kod ile yapıyoruz :
WebResponse response = request.GetResponse();
Burada bir Web response nesnesi oluşturduk ve yukarıdaki nesnemizi çalıştırdık. Gelen cevabı ise bu nesnemizde tuttuk. Bundan sonra cevaba göre işlem yapacağız. İsterseniz bir mesaj kutusu içerisinde aşağıdaki gib gösterebilirsiniz.
Stream gelen_cevap= response.GetResponseStream ();
StreamReader reader = new StreamReader (gelen_cevap);
string cikti = reader.ReadToEnd();
//Dilersek bir mesaj kutusu ile gelen veriyi gösterelim
MessageBox.Show(cikti);
Bu şekilde C# ile Web Servis dosyalarımızı kullanabiliyoruz ve programımızdan online işlemleri daha güvenli bir şekilde yapabiliyoruz.
Bir sonraki yazıda görüşmek üzere -- Takipte Kalın
İyi Çalışmalar
Burak Hamdi TUFAN
Comments