Apache HttpClient - Penangan Respons

Memproses respons HTTP menggunakan penangan respons direkomendasikan. Dalam bab ini, kita akan membahas cara membuat penangan respons dan cara menggunakannya untuk memproses respons.

Jika Anda menggunakan penangan respons, semua koneksi HTTP akan dilepaskan secara otomatis.

Membuat penangan respons

API HttpClient menyediakan antarmuka yang dikenal sebagai ResponseHandler di dalam paket org.apache.http.client. Untuk membuat penangan respons, terapkan antarmuka ini dan timpa handleResponse() metode.

Setiap tanggapan memiliki kode status dan jika kode status antara 200 dan 300, itu berarti tindakan berhasil diterima, dipahami, dan diterima. Oleh karena itu, dalam contoh kami, kami akan menangani entitas tanggapan dengan kode status tersebut.

Mengeksekusi permintaan menggunakan penangan respons

Ikuti langkah-langkah yang diberikan di bawah ini untuk menjalankan permintaan menggunakan penangan respons.

Langkah 1 - Buat Objek HttpClient

Itu createDefault() metode dari HttpClients kelas mengembalikan objek kelas CloseableHttpClient, yang merupakan implementasi dasar dari HttpClientantarmuka. Menggunakan metode ini membuat objek HttpClient

CloseableHttpClient httpclient = HttpClients.createDefault();

Langkah 2 - Buat Instansiasi Penangan Respons

Instantiate objek penangan respons yang dibuat di atas menggunakan baris kode berikut -

ResponseHandler<String> responseHandler = new MyResponseHandler();

Langkah 3 - Buat Objek HttpGet

Itu HttpGet class mewakili permintaan HTTP GET yang mengambil informasi dari server yang diberikan menggunakan URI.

Buat permintaan HttpGet dengan membuat instance kelas HttpGet dan dengan meneruskan string yang mewakili URI sebagai parameter ke konstruktornya.

ResponseHandler<String> responseHandler = new MyResponseHandler();

Langkah 4 - Jalankan permintaan Dapatkan menggunakan penangan respons

Itu CloseableHttpClient kelas memiliki varian execute() metode yang menerima dua objek ResponseHandler dan HttpUriRequest, serta mengembalikan objek respons.

String httpResponse = httpclient.execute(httpget, responseHandler);

Contoh

Contoh berikut menunjukkan penggunaan penangan respons.

import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

class MyResponseHandler implements ResponseHandler<String>{
 
   public String handleResponse(final HttpResponse response) throws IOException{

      //Get the status of the response
      int status = response.getStatusLine().getStatusCode();
      if (status >= 200 && status < 300) {
         HttpEntity entity = response.getEntity();
         if(entity == null) {
            return "";
         } else {
            return EntityUtils.toString(entity);
         }

      } else {
         return ""+status;
      }
   }
}

public class ResponseHandlerExample {
   
   public static void main(String args[]) throws Exception{
 
      //Create an HttpClient object
      CloseableHttpClient httpclient = HttpClients.createDefault();

      //instantiate the response handler
      ResponseHandler<String> responseHandler = new MyResponseHandler();

      //Create an HttpGet object
      HttpGet httpget = new HttpGet("http://www.tutorialspoint.com/");

      //Execute the Get request by passing the response handler object and HttpGet object
      String httpresponse = httpclient.execute(httpget, responseHandler);

      System.out.println(httpresponse);
   }
}

Keluaran

Program di atas menghasilkan keluaran sebagai berikut -

<!DOCTYPE html>
<!--[if IE 8]><html class = "ie ie8"> <![endif]-->
<!--[if IE 9]><html class = "ie ie9"> <![endif]-->
<!--[if gt IE 9]><!-->
<html lang = "en-US"> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset = "utf-8">
<meta http-equiv = "X-UA-Compatible" content = "IE = edge">
<meta name = "viewport" content = "width = device-width,initial-scale = 1.0,userscalable = yes">
<link href = "https://cdn.muicss.com/mui-0.9.39/extra/mui-rem.min.css"
rel = "stylesheet" type = "text/css" />
<link rel = "stylesheet" href = "/questions/css/home.css?v = 3" />
<script src = "/questions/js/jquery.min.js"></script>
<script src = "/questions/js/fontawesome.js"></script>
<script src = "https://cdn.muicss.com/mui-0.9.39/js/mui.min.js"></script>
</head>
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-232293-17');
</script>
</body>