Java Networking : Apache HTTPClient

Oleh : Reza Ervani

بسم الله الرحمن الرحيم

Rujukan : Tutorial Apache HTTPClient oleh Lars Vogel – http://www.vogella.com/tutorials/ApacheHttpClient/article.html

 

Menggunakan Apache HttpClient

Pustaka Apache HttpClient menyederhanakan penangangan request HTTP. Untuk menggunakan pustaka ini, kita dapat mengunduh binary dengan dependency-nya dari http://hc.apache.org dan kemudian kita tambahkan di classpath proyek kita.

Kita menerima dan mengirimkan data via class HttpClient. Suatu instance dari class ini dapat dibuat dengan new DefaultHttpClient();

DefaultHttpClient adalah standar HttpClient dan menggunakan class SingleClientConnManager untuk menangani koneksi HTTP. SingleClientConnManager tidaklah bersifat thread-safe, ini berarti bahwa akse kesana via beberapa thread akan mengakibatkan masalah.

HttpClient menggunakan suatu HttpUriRequest untuk mengirim dan menerima data. Subclass penting dari HttpUriRequest adalah HttpGet dan HttpPost. Kita dapat menerima respon dari HttpClient sebagai suatu InputStream

Contoh

Catatan
Kode pada contoh berikut tidak bekerja sehingga kita menyediakan backend yang diperlukan untuk menerima data. Tapi contoh ini sudah mewakili cara mensetup HttpClient. Unduh pustaka HttpClient dari website Apache. Kita dapat mengunduh paket “bin” termasuk seluruh dependency-nya

Buat proyek baru bernama com.eclipseprogramming.PenanganHTTP dan tambahkan file pustaka tadi ke path proyek Java kita.

Http Get

Berikut contoh request HTTP Get via HttpClient


HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://www.rumahilmu.net");
HttpResponse response = client.execute(request);

// Get the response
BufferedReader rd = new BufferedReader
  (new InputStreamReader(response.getEntity().getContent()));
    
String line = "";
while ((line = rd.readLine()) != null) {
  textView.append(line);
} 

Http Post

Contoh berikut akan mengirim suatu request post ke URL http://rumahilmu.net/register dan menyertakan parameter “registrationid” yang merupakan nilai acak


package com.eclipseprogramming.PenanganHTTP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class SimpleHttpPut { 
  public static void main(String[] args) {
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://rumahilmu.net/register");
    try {
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
      nameValuePairs.add(new BasicNameValuePair("registrationid",
          "123456789"));
      post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 
      HttpResponse response = client.execute(post);
      BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
      String line = "";
      while ((line = rd.readLine()) != null) {
        System.out.println(line);
      }

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
} 

Contoh berikut memperlihatkan request yang menambahkan beberapa parameter pada request POST.


package com.eclipseprogramming.PenanganHTTP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class TestHttpClient {
  public static void main(String[] args) {
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("https://www.google.com/accounts/ClientLogin");

    try {

      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
      nameValuePairs.add(new BasicNameValuePair("Email", "youremail"));
      nameValuePairs
          .add(new BasicNameValuePair("Passwd", "yourpassword"));
      nameValuePairs.add(new BasicNameValuePair("accountType", "GOOGLE"));
      nameValuePairs.add(new BasicNameValuePair("source",
          "Google-cURL-Example"));
      nameValuePairs.add(new BasicNameValuePair("service", "ac2dm"));

      post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
      HttpResponse response = client.execute(post);
      BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

      String line = "";
      while ((line = rd.readLine()) != null) {
        System.out.println(line);
        if (line.startsWith("Auth=")) {
          String key = line.substring(5);
          // do something with the key
        }

      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
} 

About Reza Ervani 430 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.