Dengan pembangunan berterusan Internet, protokol HTTP telah menjadi salah satu asas komunikasi rangkaian moden. Dalam pengaturcaraan Java, dengan menggunakan perpustakaan Apache HttpClient, anda boleh melaksanakan operasi permintaan HTTP dengan sangat mudah. Artikel ini akan memperkenalkan cara menggunakan Apache HttpClient untuk membuat permintaan HTTP dalam pembangunan API Java.
Sebelum anda bermula, anda perlu memuat turun perpustakaan Apache HttpClient dan menambahkannya sebagai pergantungan projek. Apache HttpClient ialah perpustakaan klien HTTP Java sumber terbuka yang boleh dirujuk melalui alatan seperti Maven dan Gradle.
Berikut ialah contoh penggunaan Maven untuk merujuk Apache HttpClient:
<dependencies> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> </dependencies>
Selepas memperkenalkan perpustakaan, anda boleh mula membuat permintaan HTTP.
Menghantar permintaan GET menggunakan HttpClient adalah sangat mudah. Berikut ialah contoh yang menunjukkan cara menghantar permintaan GET melalui HttpClient dan mencetak kandungan respons:
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("https://www.baidu.com"); try (CloseableHttpResponse response = httpClient.execute(httpGet)) { HttpEntity entity = response.getEntity(); if (entity != null) { String result = EntityUtils.toString(entity, "UTF-8"); System.out.println(result); } } catch (IOException e) { e.printStackTrace(); }
Kod di atas akan menghantar permintaan GET ke Baidu dan kemudian mencetak kandungan respons. Dalam kod ini, kami mencipta contoh klien CloseableHttpClient, kemudian mencipta permintaan GET menggunakan objek HttpGet dan melaksanakan permintaan itu. Entiti diperoleh dalam tindak balas, dan kemudian entiti ditukar menjadi rentetan dan output.
Apabila menghantar permintaan POST menggunakan HttpClient, anda boleh memilih untuk menggunakan objek UrlEncodedFormEntity atau objek MultipartEntityBuilder untuk memasukkan parameter permintaan.
Berikut ialah contoh menggunakan objek UrlEncodedFormEntity:
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("https://www.baidu.com"); List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("username", "johndoe")); params.add(new BasicNameValuePair("password", "password123")); try { httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } try (CloseableHttpResponse response = httpClient.execute(httpPost)) { HttpEntity entity = response.getEntity(); if (entity != null) { String result = EntityUtils.toString(entity, "UTF-8"); System.out.println(result); } } catch (IOException e) { e.printStackTrace(); }
Kod di atas akan menghantar permintaan POST ke Baidu dan memasukkan parameter dalam badan permintaan. Dalam contoh ini, kami menggunakan objek UrlEncodedFormEntity untuk mengandungi parameter permintaan dan menetapkannya sebagai entiti untuk permintaan POST. Entiti diperoleh dalam tindak balas, dan kemudian entiti ditukar menjadi rentetan dan output.
Apabila anda perlu menghantar fail, anda harus menggunakan objek MultipartEntityBuilder. Berikut ialah contoh fail yang disertakan:
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://localhost:8080/upload"); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody("file", new File("example.txt")); httpPost.setEntity(builder.build()); try (CloseableHttpResponse response = httpClient.execute(httpPost)) { HttpEntity entity = response.getEntity(); if (entity != null) { String result = EntityUtils.toString(entity, "UTF-8"); System.out.println(result); } } catch (IOException e) { e.printStackTrace(); }
Kod di atas akan memindahkan fail bernama example.txt ke localhost:8080. Dalam contoh ini, kami menggunakan objek MultipartEntityBuilder dan menambah fail sebagai kandungan binari. Entiti diperoleh dalam tindak balas dan kemudian ditukar kepada rentetan untuk output.
Kadangkala, kita perlu menambah maklumat pengepala pada permintaan. Berikut ialah contoh menambah maklumat pengepala:
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("https://www.baidu.com"); httpPost.setHeader("User-Agent", "Mozilla/5.0"); try (CloseableHttpResponse response = httpClient.execute(httpPost)) { HttpEntity entity = response.getEntity(); if (entity != null) { String result = EntityUtils.toString(entity, "UTF-8"); System.out.println(result); } } catch (IOException e) { e.printStackTrace(); }
Kod di atas akan menghantar permintaan GET kepada Baidu dan menambah maklumat pengepala Ejen Pengguna. Dalam contoh ini, kami menggunakan objek HttpPost untuk membuat permintaan GET dan memanggil kaedah setHeader untuk menambah maklumat pengepala. Entiti diperoleh dalam tindak balas dan kemudian ditukar kepada rentetan untuk output.
Apabila menghantar permintaan, anda juga boleh menetapkan tamat masa permintaan dan tamat masa respons. Ini menghalang pelanggan daripada menyekat selama-lamanya sementara menunggu respons daripada pelayan. Berikut ialah contoh menetapkan tamat masa:
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("https://www.baidu.com"); RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(5000) // 连接超时时间 .setSocketTimeout(5000) // 响应超时时间 .build(); httpPost.setConfig(requestConfig); try (CloseableHttpResponse response = httpClient.execute(httpPost)) { HttpEntity entity = response.getEntity(); if (entity != null) { String result = EntityUtils.toString(entity, "UTF-8"); System.out.println(result); } } catch (IOException e) { e.printStackTrace(); }
Kod di atas akan menghantar permintaan POST ke Baidu dan menetapkan tamat masa sambungan dan tamat masa respons kepada 5 saat. Dalam contoh ini, kami menggunakan objek RequestConfig dan menetapkan tamat masa sambungan dan tamat masa respons melalui kaedah tersuai. Entiti diperoleh dalam tindak balas dan kemudian ditukar kepada rentetan untuk output.
Pustaka Apache HttpClient menyediakan banyak API mudah yang membolehkan pembangun Java melaksanakan permintaan HTTP dengan sangat mudah. Artikel ini menerangkan cara menggunakan Apache HttpClient untuk menghantar permintaan GET, permintaan POST, permintaan yang menyertakan fail, permintaan yang menambah maklumat pengepala dan permintaan yang menetapkan tamat masa. Saya harap artikel ini dapat memberikan sedikit bantuan kepada pembangun Java menggunakan Apache HttpClient.
Atas ialah kandungan terperinci Menggunakan Apache HttpClient untuk permintaan HTTP dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!