Web Servisleri Nedir?

Web servisleri, kısaca web üzerinden belirli servisler veren küçük programlardır. Kullanıcılar bu web servislerinden yararlanmak için belli standartlara uymak durumundadır. Örneğin web servislerine erişim HTTP protokolü ile olur. Web üzerinde veri geçişleri bir çok firewall’a takılsa da HTTP verilerinin aktarıldığı 80 numaralı porttan gelen verilere tüm firewall’ler izin verir. Bu herkesin HTTP protokolünü kullanarak web servisine ulaşmasını sağlar.  HTTP üzerinden bir erişim isteği oluştuğunda SOAP (Simple Object Access Protocol) denilen protokol devreye girerek XML çıktıları üretir. XML çıktılarının üretilmesinin sebebi; XML’in standart bir veri paylaşım aracı olması ve kullanıcının kullandığı teknolojiyi ayırt etmemesidir. Yani JAVA kullanan bir istemci C# ile yazılmış bir web servisini kullanabilir.
XML’i daha yakından bakarsak;
W3C‘ye göre HTML gibi bir işaretleme dilidir ancak onun yerini almak için geliştilmemiştir. HTML’den en önemli farkı önceden belirtilmiş etiketler yoktur. Kullanıcı kendisi belirtmek durumundadır. Ayrıca veriyi tanımlamak için Document Type Definiton ya da XMLSchema kullanmak gerekir.
Web servisleri bir çok avantajından dolayı oldukça popülerdir. Gelecek yıllarda kullanımının daha da artacağı düşünülmektedir. Çünkü veri tanımlaması için kullandığı XML, oldukça esnek bir dildir ve yazıldığı ortamdan bağımsız çalışır. Tabii ki web üzerinden verilen hizmete her yerden erişim olanağı ve web’in yaygın kullanımı da avantajdır.

Web Servislerinde SOAP ve HTTP GET/POST Kullanımı

SOAP(Simple Object Access Protocol), web üzerinden önceden yazılmış fonksiyonları kullanabilmek için geliştirilmiş XML tabanlı kurallar bütünüdür. Diğer bir deyişle web servisi ve onu kullanan istemci arasında ilişkiyi belli standartlara dayandırır. Bu standartları da HTTP protokolü sayesinde gerçekleşir.

Bir web servisi yazarken elimizdeki XML datayı üç şekilde tanımlayabiliriz. Burada bu yöntemlerin kullanımını incelediğimiz için önceden yazılmış web servislerini kullanmak daha pratik olur. Buradaki sitedeki bir web servisi kullanılabilir. Currency Convertor servisi üzerinden anlatabiliriz.
1. SOAP
Genel gösterimi şu şekildedir:
""
"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%gt;"< p="">
"<conversionrate "="" http:="" www.webservicex.net="" xmlns="<a href=">http://www.webserviceX.NET/">"
"USD"
"TRY"
""
""
“” Burada ki “<” ve “>” işaretleri tırnak işaretinden dolayı problem çıkarabilir. Bu yüzden “<” yerine < , “>” yerine de > ifadesi kullanılabilir. Datayı oluşturduktan sonra Web Service URL’i ve onu talep eden(request) bildirimleri oluşturabiliriz.
NSURL *url = [NSURLURLWithString:@"http://www.webservicex.net/CurrencyConvertor.asmx?WSDL"]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; NSString *length = [NSString stringWithFormat:@"%d",[soapMessage length]]; [theRequest addValue:@"application/x-www-form-urlencoded"forHTTPHeaderField:@"Content-Type"]; [theRequest addValue:@"http://www.webserviceX.NET/ConversionRate"forHTTPHeaderField:@"SOAPAction"]; [theRequest addValue:length forHTTPHeaderField:@"Content-Length"]; [theRequest setHTTPMethod:@"POST"]; [theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
Burada kullanılan bilgiler XML mesajının içinde yazılıdır. Ayrıca bu kısım HTTP POST ve HTTP GET için de aynıdır. Sadece yazılacak bilgiler değişir. Bu yazılan iki kısımla web servisiyle bağlantı kurmak için gerekli ortam sağlanmış oldu.
2. HTTP POST
Bir diğer tanım türü de HTTP POST kullanmaktır.
FromCurrency=%@&ToCurrency=%@”,c1.text,c2.text ifadesi ile c1 ve c2 adlı metin kutularına yazılan bilgi alınmış olur.
3. HTTP GET
GET /CurrencyConvertor.asmx/ConversionRate?FromCurrency=string&ToCurrency=string Burada GET ve POST metotlarının standart hali görülmektedir.