Apache HttpClient 是一个功能强大且灵活的库,用于在Java中处理HTTP请求。
它支持多种HTTP方法,包括GET、POST、PUT和DELETE等。
本教程将演示如何使用Apache HttpClient来执行GET、POST、PUT和DELETE请求。
要使用Apache HttpClient,您需要在pom.xml文件中添加以下依赖项:
1 2 3 4 5 6 |
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5 --> <dependency> <groupId>org.apache.httpcomponents.client5</groupId> <artifactId>httpclient5</artifactId> <version>5.3</version> </dependency> |
我们将创建简单的Java类,这些类将向指定的URL发送GET、POST、PUT和DELETE请求,并打印响应。
为了演示目的,我们将使用JSONPlaceholder API,该API提供了一个虚拟的在线RESTful端点,用于测试和原型设计。
发送GET请求的Java类
创建一个名为HttpClientGetExample的类,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.client5.http.classic.methods.CloseableHttpResponse; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.io.entity.EntityUtils; public class HttpClientGetExample { public static void main(String[] args) { String url = "https://jsonplaceholder.typicode.com/posts/1"; // 创建HttpClient try (CloseableHttpClient httpClient = HttpClients.createDefault()) { // 创建HttpGet请求 HttpGet request = new HttpGet(url); // 执行请求 try (CloseableHttpResponse response = httpClient.execute(request)) { // 获取HTTP响应状态 System.out.println("Response Code: " + response.getCode()); // 获取HTTP响应内容 String content = EntityUtils.toString(response.getEntity()); System.out.println("Response Content: \n" + content); } } catch (Exception e) { e.printStackTrace(); } } } |
示例输出
Response Code: 200
Response Content:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
发送POST请求的Java类
创建一个名为HttpClientPostExample的类,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import org.apache.hc.client5.http.classic.methods.HttpPost; import org.apache.hc.client5.http.classic.methods.CloseableHttpResponse; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.io.entity.StringEntity; import org.apache.hc.core5.http.ContentType; import org.apache.hc.core5.http.io.entity.EntityUtils; public class HttpClientPostExample { public static void main(String[] args) { String url = "https://jsonplaceholder.typicode.com/posts"; String json = "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}"; // 创建HttpClient try (CloseableHttpClient httpClient = HttpClients.createDefault()) { // 创建HttpPost请求 HttpPost request = new HttpPost(url); // 设置JSON负载 StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); request.setEntity(entity); // 设置头部 request.setHeader("Accept", "application/json"); request.setHeader("Content-type", "application/json"); // 执行请求 try (CloseableHttpResponse response = httpClient.execute(request)) { // 获取HTTP响应状态 System.out.println("Response Code: " + response.getCode()); // 获取HTTP响应内容 String content = EntityUtils.toString(response.getEntity()); System.out.println("Response Content: \n" + content); } } catch (Exception e) { e.printStackTrace(); } } } |
示例输出
Response Code: 201
Response Content:
{
"title": "foo",
"body": "bar",
"userId": 1,
"id": 101
}
发送PUT请求的Java类
创建一个名为HttpClientPutExample的类,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import org.apache.hc.client5.http.classic.methods.HttpPut; import org.apache.hc.client5.http.classic.methods.CloseableHttpResponse; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.io.entity.StringEntity; import org.apache.hc.core5.http.ContentType; import org.apache.hc.core5.http.io.entity.EntityUtils; public class HttpClientPutExample { public static void main(String[] args) { String url = "https://jsonplaceholder.typicode.com/posts/1"; String json = "{\"id\":1,\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}"; // 创建HttpClient try (CloseableHttpClient httpClient = HttpClients.createDefault()) { // 创建HttpPut请求 HttpPut request = new HttpPut(url); // 设置JSON负载 StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); request.setEntity(entity); // 设置头部 request.setHeader("Accept", "application/json"); request.setHeader("Content-type", "application/json"); // 执行请求 try (CloseableHttpResponse response = httpClient.execute(request)) { // 获取HTTP响应状态 System.out.println("Response Code: " + response.getCode()); // 获取HTTP响应内容 String content = EntityUtils.toString(response.getEntity()); System.out.println("Response Content: \n" + content); } } catch (Exception e) { e.printStackTrace(); } } } |
示例输出
Response Code: 200
Response Content:
{
"id": 1,
"title": "foo",
"body": "bar",
"userId": 1
}
发送DELETE请求的Java类
创建一个名为HttpClientDeleteExample的类,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import org.apache.hc.client5.http.classic.methods.HttpDelete; import org.apache.hc.client5.http.classic.methods.CloseableHttpResponse; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.io.entity.EntityUtils; public class HttpClientDeleteExample { public static void main(String[] args) { String url = "https://jsonplaceholder.typicode.com/posts/1"; // 创建HttpClient try (CloseableHttpClient httpClient = HttpClients.createDefault()) { // 创建HttpDelete请求 HttpDelete request = new HttpDelete(url); // 执行请求 try (CloseableHttpResponse response = httpClient.execute(request)) { // 获取HTTP响应状态 System.out.println("Response Code: " + response.getCode()); // 获取HTTP响应内容 String content = EntityUtils.toString(response.getEntity()); System.out.println("Response Content: \n" + content); } } catch (Exception e) { e.printStackTrace(); } } } |
示例输出
Response Code: 200
Response Content:
{}
使用Apache HttpClient来执行GET、POST、PUT和DELETE HTTP请求非常方便。
通过遵循本教程,您现在应该能够创建并执行这些类型的请求,处理响应,并定制HTTP请求和响应过程。
Apache HttpClient提供了一整套功能,使其成为处理Java应用程序中HTTP操作的优秀选择。
JSONPlaceholder API作为一个实用且方便的来源,适合用来测试和原型化您的HTTP请求。