目录Maven依赖示例场景JSONPlaceholder API GET请求POST请求PUT请求DELETE请求额外配置结论Apache HttpClient 是一个功能强大且灵活的库,用于在Java中处理HTTP请求。
它支持多种HTTP方法,包括GET、POST、PUT和DELETE等。
本教程将演示如何使用Apache HttpClient来执行GET、POST、PUT和DELETE请求。
Maven依赖要使用Apache HttpClient,您需要在pom.xml
文件中添加以下依赖项:
示例场景我们将创建简单的Java类,这些类将向指定的URL发送GET、POST、PUT和DELETE请求,并打印响应。
JSONPlaceholder API为了演示目的,我们将使用JSONPlaceholder API,该API提供了一个虚拟的在线RESTful端点,用于测试和原型设计。
GET请求发送GET请求的Java类创建一个名为HttpClientGetExample
的类,代码如下:
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请求发送POST请求的Java类创建一个名为HttpClientPostExample
的类,代码如下:
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请求发送PUT请求的Java类创建一个名为HttpClientPutExample
的类,代码如下:
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请求发送DELETE请求的Java类创建一个名为HttpClientDeleteExample
的类,代码如下:
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:
{}额外配置设置自定义头部:可以通过调用请求对象(如HttpGet、HttpPost、HttpPut、HttpDelete)上的setHeader方法来设置自定义头部。
处理重定向:默认情况下,Apache HttpClient会自动处理重定向。您可以使用自定义的HttpClientBuilder来自定义这种行为。
设置超时:可以使用RequestConfig来设置连接和套接字超时。
结论使用Apache HttpClient来执行GET、POST、PUT和DELETE HTTP请求非常方便。
通过遵循本教程,您现在应该能够创建并执行这些类型的请求,处理响应,并定制HTTP请求和响应过程。
Apache HttpClient提供了一整套功能,使其成为处理Java应用程序中HTTP操作的优秀选择。
JSONPlaceholder API作为一个实用且方便的来源,适合用来测试和原型化您的HTTP请求。
到此这篇关于如何使用Apache HttpClient来执行GET、POST、PUT和DELETE请求的文章就介绍到这了,更多相关Apache HttpClient执行GET、POST、PUT和DELETE请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:SpringCloud Feign使用ApacheHttpClient代替默认client方式一文探索Apache HttpClient如何设定超时时间JSP开发中Apache-HTTPClient 用户验证的实例详解Apache HttpClient使用实例详解
