Membaca Isi Respons HTTP sebagai String di Java

REST Top

Saya baru saja mengumumkan kursus Learn Spring baru , yang berfokus pada dasar-dasar Spring 5 dan Spring Boot 2:

>> LIHAT KURSUS Java Top

Saya baru saja mengumumkan kursus Learn Spring baru , yang berfokus pada dasar-dasar Spring 5 dan Spring Boot 2:

>> LIHAT KURSUSnya

1. Perkenalan

Dalam tutorial ini, kita akan menjelajahi beberapa pustaka untuk membaca isi respons HTTP sebagai string di Java. Sejak versi pertama, Java menyediakan HttpURLConnection API. Ini hanya mencakup fitur dasar dan dikenal tidak ramah pengguna.

Dengan dirilisnya JDK 11, Java memperkenalkan HttpClient API yang baru dan lebih baik untuk menangani komunikasi HTTP. Kami akan membahas pustaka ini, dan kami akan memeriksa beberapa alternatif seperti Apache HttpClient dan Template Spring Rest.

2. HttpClient

Seperti yang kami sebutkan sebelumnya, HttpClient telah ditambahkan ke Java 11. Ini memungkinkan kita untuk mengakses sumber daya melalui jaringan. Tapi, tidak seperti HttpURLConnection , HttpClient mendukung HTTP / 1.1 dan HTTP / 2 . Selain itu, ini menyediakan jenis permintaan sinkron dan asinkron .

HttpClient menawarkan API modern dengan banyak fleksibilitas dan fitur canggih. Terutama, API ini terdiri dari tiga kelas inti: HttpClient , HttpRequest , dan HttpResponse .

HttpResponse menjelaskan hasil dari panggilan HttpRequest . HttpResponse tidak dibuat secara langsung dan tersedia ketika isi telah diterima sepenuhnya.

Untuk membaca tubuh respons sebagai String, pertama-tama kita perlu membuat klien sederhana dan meminta objek:

HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(DUMMY_URL)) .build();

Kemudian, kita cukup menggunakan BodyHandlers dan memanggil metode ofString () untuk mengembalikan respons:

HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

3. HttpURLConnection

HttpURLConnection adalah klien HTTP ringan yang digunakan untuk mengakses sumber daya melalui protokol HTTP atau HTTPS dan memungkinkan kita membuat InputStream . Setelah kita mendapatkan InputStream, kita dapat membacanya seperti file lokal biasa.

Di Java, kelas utama yang dapat kita gunakan untuk mengakses Internet adalah kelas java.net.URL dan kelas java.net.HttpURLConnection . Pertama, kita akan menggunakan kelas URL untuk menunjuk ke sumber daya web. Kemudian, kita dapat mengaksesnya dengan menggunakan kelas HttpURLConnection .

Untuk mendapatkan tubuh respons dari URL sebagai String , pertama-tama kita harus membuat HttpURLConnection menggunakan URL kita :

HttpURLConnection connection = (HttpURLConnection) new URL(DUMMY_URL).openConnection();

The URL baru (DUMMY_URL) .openConnection () mengembalikan HttpURLConnection . Objek ini memungkinkan kita untuk menambahkan header atau memeriksa kode respon.

Selanjutnya, mari kita dapatkan InputStream dari objek koneksi :

InputStream inputStream = connection.getInputStream();

Terakhir, kita perlu mengubah InputStream menjadi String .

4. Apache HttpClient

Di bagian ini, kita akan melihat cara menggunakan Apache HttpClient untuk membaca isi respons HTTP sebagai string.

Untuk menggunakan pustaka ini, kita perlu menambahkan ketergantungannya ke proyek Maven kita:

 org.apache.httpcomponents httpclient 4.5.12 

Kita bisa mengambil dan mengirim data melalui kelas CloseableHttpClient . Untuk membuat sebuah instance dengan konfigurasi default kita bisa menggunakan HttpClients.createDefault () .

CloseableHttpClient menyediakan metode eksekusi untuk mengirim dan menerima data. Metode ini menggunakan parameter tipe HttpUriRequest , yang memiliki banyak subclass termasuk HttpGet dan HttpPost .

Mari pertama-tama buat objek HttpGet :

HttpGet request = new HttpGet(DUMMY_URL);

Kedua, mari buat klien :

CloseableHttpClient client = HttpClients.createDefault();

Ketiga, kami mengambil objek respons dari hasil metode eksekusi :

CloseableHttpResponse response = client.execute(request);

Akhirnya, kami mengembalikan badan respons dengan mengubah entitas respons menjadi String :

HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity);

5. Template Musim Semi Istirahat

Di bagian ini, kita akan melihat cara menggunakan Spring RestTemplate untuk membaca isi respons HTTP sebagai string.

Kelas RestTemplate adalah alat penting yang disediakan oleh Spring yang menawarkan template sederhana untuk membuat operasi HTTP sisi klien melalui pustaka klien HTTP yang mendasari seperti JDK HttpURLConnection , Apache HttpClient , dan lainnya.

RestTemplate menyediakan beberapa metode yang berguna untuk membuat permintaan HTTP dan menangani tanggapan.

Kita dapat menggunakan pustaka ini dengan terlebih dahulu menambahkan beberapa dependensi ke proyek Maven kita:

 org.springframework.boot spring-boot-starter-web ${spring-boot.version}   org.springframework.boot spring-boot-starter-test ${spring-boot.version} test 

Untuk membuat permintaan web dan mengembalikan tubuh respons sebagai string, pertama-tama mari buat instance RestTemplate :

RestTemplate restTemplate = new RestTemplate();

Kedua, kami mendapatkan objek respons dengan memanggil metode getForObject () , meneruskan URL dan jenis respons yang diinginkan - kami akan menggunakan String.class dalam contoh kami:

String response = restTemplate.getForObject(DUMMY_URL, String.class);

6. Kesimpulan

Di artikel ini, kita telah melihat bagaimana menggunakan beberapa perpustakaan untuk membaca isi respon HTTP sebagai String .

Seperti biasa, kode lengkap tersedia di GitHub.

REST bawah

Saya baru saja mengumumkan kursus Learn Spring baru , yang berfokus pada dasar-dasar Spring 5 dan Spring Boot 2:

>> LIHAT KURSUS Jawa bawah

Saya baru saja mengumumkan kursus Learn Spring baru , yang berfokus pada dasar-dasar Spring 5 dan Spring Boot 2:

>> LIHAT KURSUSnya