RESTful Web Servislerine Baglanmak

Bu yazıda RESTful web servislerine nasıl bağlanabileceğimize bakacağız. Yani zaten internet tarayıcalarımızdan bağlanabildiğimizi biliyoruz, fakat bunu Java dilini kullanarak nasıl yapacağımızı inceleyeceğiz. Yalnız yazıya başlamadan önce REST ile RESTful arasında ki farkı netleştirmek istiyorum.

REST, Roy T. Fielding tarafından tanımlanmış bir yazılım mimarisidir. Roy T. Fielding, Apache HTTP Server projesinin kuruclarından. Kendisi aynı zamanda Apache Software Foundation’ın yöneticiliğinide yapmış bir üstat. Aynı zamanda doktora tezinde, REST yazılım mimarisini açıklamıştır. Bu yazılım mimarisi dağıtık sistemlerin tasarımında kullanılıyor. Amaç, durum değişimlerinin istemcilere aktarılması. RESTful ise bu yazılım mimarisinin standartları kullanılarak geliştirilen web servisleri için kullanılıyor. Genel olarak teorisini değilde uygulamasını bildiğimizden, bu iki terim aynı şeymiş gibi kullanılıyor.

Giris

Yine her zamanki gibi Maven üzeirnden projemizi gerçekleştireceğiz. Bir konsoldan başka bir şeye ihtiyacımız olmadığından, maven-archetype-quickstart‘ını kullanacağız. Öncelikle ihtiyacımız olan bağlanabileceğimiz, RESTful bir servis. Bu da benim oyun alanımda bulunuyor. Biz bir tanesi üzerinde örnek yapacağız fakat arzu eden kullanabilsin diye iki web servisinide veriyorum.

[fancy_list style=”triangle_arrow” variation=”blue”]

  • Test Web Servisi: Sadece geriye bilindik bir kullanıcı nesnesi gönderen servis. XML olarak geri dönüş alıyoruz.
  • Email Kontrol Web Servisi: Gönderdiğiniz email adresinin doğruluğunu kontrol edip size sonucu döndüren web servisi. Yine geri dönen bilgi Plain-Text olarak dönüyor.

[/fancy_list]

Bundan sonra web isteklerimizi rahatlıkla göndermemizi sağlayan HttpClient kütüphanesine ihtiyacımız var. Bunu projemize aşağıdaki maven bağımlılığını göstererek ekleyebilirsiniz. Bu kütüphanenin güzel yanı Android tarafından destekleniyor oluşu. Yani burada yaptığımız tüm işlemleri rahatlıkla Android uygulamalarında da yapabilirsiniz. Üstelik kütüphane Andorid ile birlikte geldiğinden ek bağımlılık eklemenize de gerek kalmayacaktır.

pom.xml

<dependencies>
...
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.1.3</version>
</dependency>
...
</dependencies>

RESTful

Şimdi tek yapmamız gereken basit olan Test web servisimize bağlanmak. Genel olarak URL üzeirnden çalıştığından diğer RESTful servislerinde sizi zorlayacağını düşünmüyorum.

[info_box]Eclipse altında çalıştığımızdan ilgili bağımlılıkları sınıfınıza eklemek için CTRL+SHIFT+O kısayolunu kullanabilirsiniz.[/info_box]

Bağlantıyı sağlayacak metdou App.java sınıfımıza ekliyoruz.

App.java

public String connectRestService(String url) {
String result = "";
HttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
ResponseHandler<String> handler = new BasicResponseHandler();
try {
result = httpClient.execute(request, handler);
} catch (ClientProtocolException e) {
System.err
.println("An Exception occured while connection Rest web service... ClientProtocolException... M: "
+ e.getMessage() + " C:" + e.getCause());
} catch (IOException e) {
System.err
.println("An Exception occured while connection Rest web service... IOException... M: "
+ e.getMessage() + " C:" + e.getCause());
} finally {
httpClient.getConnectionManager().shutdown();
}
return result;
}

Test

Test kısmında ise yine App.java sınıfımıza, aşağıdaki main metodunu ekliyoruz.

App.java

public static void main(String[] args) {
App app = new App();
System.out.println("REST CLIENT APPLICATION STARTED");
System.out.println("HTTP GET REQUEST IS GOING TO SEND...");
String result = app
.connectRestService("http://wicket.bahadirakin.com/rest/test");
System.out.println("RESULT: " + result);
System.out.println("END OF LINE");

}

Bundan sonra App.java sınıfımızı çalıştırdığımızda aşağıdaki çıktılarla karşılaşmanız bekleniyor.

Son

Umarım RESTful web servislerine nasıl bağlanıldığını biraz olsun açıklayabilmişimdir. Kodun tamamını aşağıdaki linkte bulabilirsiniz.

GitHub Adresi: https://github.com/bhdrkn/Java-Examples/tree/master/RestClient

End Of Line