Apache HttpClient ile Post ve Get Örneği

Merhaba,

Web artık hayatımızın kaçınılmazı oldu. Internet of things ile birlikte internete bağlı olmayan “kalem” bile kalmayacak gelecekte (tabii görürmüyüz bilemiyore!). Velhasıl kelam herhangi bir projemizin web’e bağlılığı açık bir ihtiyaç.

Apache HttpClient kütüphanesi de bu bağımlılığı gideren (yani gerekli lokasyonlara çağrı atan alan) java’daki ağabey.

Son versionu için repository’ler burada: http://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient/4.5.1

Maven:

 
 
  1. <dependency>
  2. <groupId>org.apache.httpcomponents</groupId>
  3. <artifactId>httpclient</artifactId>
  4. <version>4.5.1</version>
  5. </dependency>

 

Gradle:

 
 
  1. 'org.apache.httpcomponents:httpclient:4.5.1'

 

Neyse lafı fazla uzatmadan POST örneği ile başlayalım (Gerekli açıklamaları comment-line da yaptım):

 
 
  1. String url= "http://xxx.com";
  2. List<NameValuePair> params = ....;
  3. //Http'i client'ı olusturuyoruz
  4. HttpClient client = HttpClientBuilder.create().build();
  5. //HttpPost instance'ı alıyoruz
  6. //Zaten GET için de HttpGet alacağız
  7. //Hatta diğer request tipler için de ayrı sınıflar HttpXXX mevcut
  8. HttpPost post = new HttpPost(url);
  9. //Optiyonel olarak header ekliyoruz
  10. post.setHeader("User-Agent", "Mozilla/5.0");
  11. //Yine datamız var ekliyoruz, tabi bunun için datayı nasıl yollaycaksak header'a
  12. //o content type'ı ekliyoruz:
  13. post.setHeader("Content-Type", "application/x-www-form-urlencoded");
  14. post.setEntity(new UrlEncodedFormEntity(params));
  15. //Request'i execute ediyoruz
  16. HttpResponse response = client.execute(post);

 

Execution sonunda data HttpResponse tipinde gelir:
response.getEntity().getContent() deyince de inputstream döner burdan sonra ne yapacağınız size kalmış. Burada data’nın gönderme ihtiyacına göre değişecek kısım header’da content type ve data’nın wrap’lenmesi. Örneğin Json gönderdiğimizi varsayalım (burada json işlemleri için Jackson kütüphanesini kullanıyorum):

 
 
  1. //Header'da content type set edilir
  2. httpClient.addHeader("Content-Type", "application/json");
  3. //Datanın çevirimi için object mapper (jackson'dan)
  4. //String'e çeviriyoruz
  5. ObjectMapper mapper  = new ObjectMapper();
  6. StringEntity paramsInStringJson = new StringEntity(mapper.writeValueAsString(params));
  7. post.setEntity(paramsInStringJson);
  8. //Bu kadar

 

GET için de HttpPost yerine dediğim gibi HttpGet sınıfından instance alacaksınız

 
 
  1. HttpGet request = new HttpGet(url);
  2. //Yine header ile ilgili işlemler yapılabilir...
  3. //Ve request yapılır
  4. HttpResponse response = client.execute(request);

Hadi kolay gelsin

Ref: http://www.mkyong.com/java/apache-httpclient-examples/

Merhaba Gençler!

Web üzerinde çalışmayı iyi kötü bir 8 sene oldu sanırsam. Hayat her anlamda zorluğunu eminimki tüm programcılara da kod üzerinde gösteriyordur. Ben de bazen saçma sapan konularda bazen imkansızları arayışta ve bazen de çok komplike şeyler yapmaya çalışırken türlü türlü problemleri çözmeye uğraşıyorum. Uğraşıyorum, çözüyorum da bunlar bazen bookmark’ların ötesine gidemiyor. Ve zamanla unutulup gidiyor… Ayrıca bazen de insanın bildiğini saklamaması gerekiyor. Ki zaten bilgi paylaştıkça çoğalan bir şey. Dolayısıyla da sitemin 3. arayüzünü yaparken blog kurma ihtiyacını duydum. Sitem tamamiyle bitmedi hatta şuan yüzde 20’lerde blog kısmı da dahil ama yapmak uzun zaman alacağından bunun benim yazılarımın önüne geçmesini istemedim temasının herşeyiyle bana ait olduğu sistemimi kurdum.

Bundan sonra ufak tefek yazılarımla karşınızda olacağım.

Esen kalın