Buku Resep HttpClient 4

1. Ikhtisar

Buku masak ini menunjukkan cara menggunakan Apache HttpClient 4 dalam berbagai contoh dan kasus penggunaan.

Fokusnya ada pada HttpClient 4.3.x dan yang lebih baru , jadi beberapa contoh mungkin tidak berfungsi dengan versi API yang lebih lama.

Format buku masak berfokus pada contoh dan praktis - tidak perlu detail dan penjelasan yang berlebihan.

Jika Anda ingin menggali lebih dalam dan mempelajari hal-hal keren lainnya yang dapat Anda lakukan dengan HttpClient - lanjutkan ke tutorial HttpClient utama .

2. Buku masak

buat klien http

CloseableHttpClient client = HttpClientBuilder.create().build();

kirim permintaan GET dasar

instance.execute(new HttpGet("//www.google.com"));

dapatkan Kode Status Respons HTTP

CloseableHttpResponse response = instance.execute(new HttpGet("//www.google.com")); assertThat(response.getStatusLine().getStatusCode(), equalTo(200));

dapatkan Jenis Media respons

CloseableHttpResponse response = instance.execute(new HttpGet("//www.google.com")); String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType(); assertThat(contentMimeType, equalTo(ContentType.TEXT_HTML.getMimeType()));

dapatkan respons tubuh

CloseableHttpResponse response = instance.execute(new HttpGet("//www.google.com")); String bodyAsString = EntityUtils.toString(response.getEntity()); assertThat(bodyAsString, notNullValue());

konfigurasikan waktu tunggu berdasarkan permintaan

@Test(expected = SocketTimeoutException.class) public void givenLowTimeout_whenExecutingRequestWithTimeout_thenException() throws ClientProtocolException, IOException { RequestConfig requestConfig = RequestConfig.custom() .setConnectionRequestTimeout(1000).setConnectTimeout(1000).setSocketTimeout(1000).build(); HttpGet request = new HttpGet(SAMPLE_URL); request.setConfig(requestConfig); instance.execute(request); }

konfigurasikan waktu tunggu di seluruh klien

RequestConfig requestConfig = RequestConfig.custom(). setConnectionRequestTimeout(1000).setConnectTimeout(1000).setSocketTimeout(1000).build(); HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig);

kirim permintaan POST

instance.execute(new HttpPost(SAMPLE_URL));

menambahkan parameter ke permintaan

List params = new ArrayList(); params.add(new BasicNameValuePair("key1", "value1")); params.add(new BasicNameValuePair("key2", "value2")); request.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));

konfigurasikan bagaimana pengalihan ditangani untuk Permintaan HTTP

CloseableHttpClient instance = HttpClientBuilder.create().disableRedirectHandling().build(); CloseableHttpResponse response = instance.execute(new HttpGet("//t.co/I5YYd9tddw")); assertThat(response.getStatusLine().getStatusCode(), equalTo(301));

konfigurasikan header untuk sebuah permintaan

HttpGet request = new HttpGet(SAMPLE_URL); request.addHeader(HttpHeaders.ACCEPT, "application/xml"); response = instance.execute(request);

dapatkan tajuk dari tanggapan

CloseableHttpResponse response = instance.execute(new HttpGet(SAMPLE_URL)); Header[] headers = response.getHeaders(HttpHeaders.CONTENT_TYPE); assertThat(headers, not(emptyArray()));

tutup / lepas sumber daya

response = instance.execute(new HttpGet(SAMPLE_URL)); try { HttpEntity entity = response.getEntity(); if (entity != null) { InputStream instream = entity.getContent(); instream.close(); } } finally { response.close(); }

3. Masuk Lebih Jauh ke HttpClient

Pustaka HttpClient adalah alat yang cukup ampuh jika digunakan dengan benar - jika Anda ingin mulai menjelajahi apa yang dapat dilakukan klien - lihat beberapa tutorial:

  • HttpClient 4 - Dapatkan Kode Status
  • HttpClient - Setel Header Kustom

Anda juga dapat menggali lebih dalam HttpClient dengan menjelajahi seluruh rangkaian.

4. Kesimpulan

Format ini sedikit berbeda dari cara saya biasanya menyusun artikel saya - Saya menerbitkan beberapa buku masak pengembangan internal saya tentang topik tertentu - di Google Guava, Hamcrest, dan Mockito - dan sekarang HttpClient. Tujuannya adalah agar informasi ini tersedia secara online - dan menambahkannya setiap kali saya menemukan contoh baru yang berguna.

Penerapan semua contoh dan cuplikan kode ini dapat ditemukan di lebih dari GitHub .

Ini adalah proyek berbasis Maven, jadi semestinya mudah untuk mengimpor dan menjalankan apa adanya.