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/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir