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>