Java 9 İle Gelen HttpClient API İle GET Ve POST İşlemleri
Merhabalar arkadaşlar.
Bu yazıda sizlere Java 9 ile kullanıma sunulan HttpClient API ile GET ve POST işlemlerini örneklendireceğim.
İlk olarak bir web projesi açtım ve az sonra yapacağım GET&POST isteklerini karşılayacak şu Servlet’i yazdım:
Yukarıdaki Servlet’imizin yaptığı iş oldukça basit. Kendisine bir GET isteği gelirse konsola GET isteğinin geldiğini yazdıracak, eğer POST isteği gelirse de konsola istek içinde gelen parametreleri yazdırdıktan sonra POST isteğinin geldiğine dair bir mesajı yazdıracak. Bildiğimiz, klasik bir Servlet yani.
Daha sonra bir Java projesi açtım. Herhangi bir web projesi vs. olmasına gerek yok, basit Java projesi olması yeterli. Şimdi GET isteğini örnekleyen Java kodumuza bakalım:
- Yukarıdaki MainClass sınıfımız içerisinde import jdk.incubator.http.*; satırını ekledikten sonra main metodu içerisinde HttpClient.newHttpClient(); komutu ile bir HttClient nesnesi elde ediyoruz.
- Akabinde bir HttpRequest nesnesi elde etmemiz gerekiyor. HttpRequest.newBuilder() diyerek HttpRequest nesnesi oluşturmaya başlıyoruz. uri() metoduna GET isteğinin atılacağı adresin verilmesi gerekiyor. Bunun için URI sınıfından new operatörü ile nesne elde ediyoruz ve isteğin atılacağı adresi URI sınıfının yapılandırıcısına veriyoruz. uri() metodunu çağırdıktan sonra isteğinin tipini belirten metodu çağıyoruz. GET isteği yapmak istediğimiz için GET() metodunu çağırıyoruz ve son olarak build() metodunu çağırarak HttpRequest nesnemizi hazır hale getiriyoruz.
- httpClient.send(httpRequest, HttpResponse.BodyHandler.asString()); komutu ile az önce elde ettiğimiz httpRequest nesnesini ve BodyHandler’ımızı send() metoduna parametre olarak vererek GET isteğinin
gerçekleşmesini sağlıyoruz. GET isteği neticesinde dönen cevap da HttpResponse
tipindeki httpResponse nesnesine atanıyor. Bizim Servlet'imiz herhangi bir bilgi dönüşü yapmıyor. Biz sadece response'un statüs kodu ile ilgileneceğiz.
Benim şu an Java 9 destekli olarak kullandığım Eclipse Oxygen1.a sürümü incubator modülünü doğrudan bulamıyor. Buna çözüm olarak incubator’ın sanal makine argümanlarına eklenmesi gerekiyor. Bu işlem arama kutusuna Run Configurations yazarak ilgili ayarları açmak ve MainClass’ın VM Arguments kısmına –add-modules jdk.incubator.httpclient komutunu eklemek gerekiyor.
Bu işlemi yaptıktan sonra MainClass’a sağ tıklayıp Run As -> Java Application diyerek MainClass’ı çalıştıralım.
Eclipse’in konsol kısmında Tomcat’in konsolunu görüntülediğimde MainClass içerisinden Servlet’in doGet metoduna isteğin düşmüş olduğunu görüyorum.
Şimdi de POST kullanımını örnekliyeyim. Az önce MainClass üzerinde az bir değişiklik yaparak onu POST işlemine hazır hale getireceğim. Kodum şöyle:
GET örneğindeki MainClass’dan farklı olarak burada HttpRequest nesnemize bir Content-Type header’ı ekledik. application/x-www-form-urlencoded Content-Type’ı ile key-value çiftleri şeklinde veri göndereceğiz. uri() metodunu çağırdıktan hemen sonra POST() metodunu çağırıyoruz ve parametre olarak HttpRequest.BodyProcessor.fromString() metodunu veriyoruz. fromString() metoduna da key=value şeklinde göndermek istediğimiz parametreleri ve karakter kodlamasını veriyoruz. Burada Servlet’e name ve surname adında iki parametre gidecek. Eğer karşı tarafta POST isteğini karşılayacak servis bir JSON bekliyor olsaydı o zaman da Content-Type application/json olurdu ve fromString metoduna verilen parametre de JSON syntax’ında olurdu.
Bu sınıfı çalıştırdığımda ise şu şekilde bir konsol çıktısı alıyorum:
Parametreler Servlet’in doPost metoduna başarı ile ulaşmış ve doPost metodu onları konsola yazdırabilmiş.
Bu yazıda anlatacaklarım bu kadar arkadaşlar. Java 9 içerisinde kullanıma sunulan HttpClient API ile GET ve POST işlemlerini örneklemeye çalıştım.
Başka bir yazıda görüşene kadar sağlıcakla kalın.
Selam ve Sevgilerimle