Buku Panduan HttpClient 4

1. Gambaran keseluruhan

Buku masakan ini menunjukkan cara menggunakan Apache HttpClient 4 dalam pelbagai contoh dan kes penggunaan.

Fokusnya adalah pada HttpClient 4.3.x dan lebih tinggi , jadi beberapa contoh mungkin tidak berfungsi dengan versi lama API.

Format buku masakan adalah contoh yang difokuskan dan praktikal - tidak perlu perincian dan penjelasan yang luar biasa.

Sekiranya anda ingin menggali lebih mendalam dan mengetahui perkara menarik lain yang boleh anda lakukan dengan HttpClient - teruskan ke tutorial HttpClient utama .

2. Buku masakan

buat klien http

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

hantar permintaan GET asas

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

dapatkan Kod 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 badan tindak balas

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

konfigurasikan timeout pada 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); }

konfigurasi masa tamat pada keseluruhan pelanggan

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

hantar permintaan POST

instance.execute(new HttpPost(SAMPLE_URL));

tambah parameter pada 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 dikendalikan 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 tajuk untuk permintaan

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

dapatkan tajuk dari respons

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

tutup / lepaskan sumber

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. Pergi ke HttpClient

Perpustakaan HttpClient adalah alat yang cukup hebat jika digunakan dengan betul - jika anda ingin mula meneroka apa yang dapat dilakukan oleh pelanggan - lihat beberapa tutorial:

  • HttpClient 4 - Dapatkan Kod Status
  • HttpClient - Tetapkan Header Tersuai

Anda juga dapat menggali HttpClient dengan lebih mendalam dengan meneroka keseluruhan siri ini.

4. Kesimpulan

Format ini sedikit berbeza dengan cara saya menyusun artikel saya - saya menerbitkan beberapa buku masakan pengembangan dalaman saya pada topik tertentu - di Jambu Google, Hamcrest danMockito - dan sekarang HttpClient. Tujuannya adalah agar maklumat ini tersedia dalam talian - dan menambahkannya setiap kali saya menemui contoh berguna baru.

Pelaksanaan semua contoh dan potongan kode ini boleh didapati di GitHub .

Ini adalah projek berasaskan Maven, jadi mudah diimport dan dijalankan sebagaimana adanya.