使用Apache HttpClient执行GET、POST、PUT和DELETE请求的操作方法

 更新时间:2024年12月10日 16:46:20   作者:疯一样的码农  
Apache HttpClient 是一个功能强大且灵活的库,用于在Java中处理HTTP请求,本教程将演示如何使用Apache HttpClient来执行GET、POST、PUT和DELETE请求,感兴趣的朋友跟随小编一起看看吧

Apache HttpClient 是一个功能强大且灵活的库,用于在Java中处理HTTP请求。

它支持多种HTTP方法,包括GET、POST、PUT和DELETE等。

本教程将演示如何使用Apache HttpClient来执行GET、POST、PUT和DELETE请求。

Maven依赖

要使用Apache HttpClient,您需要在pom.xml文件中添加以下依赖项:

<!-- 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

为了演示目的,我们将使用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请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux提示未找到命令unzip和zip的解决方案

    linux提示未找到命令unzip和zip的解决方案

    这篇文章主要介绍了linux提示未找到命令unzip和zip的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 详解Linux动态库生成与使用指南

    详解Linux动态库生成与使用指南

    这篇文章主要介绍了详解Linux动态库生成与使用指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Linux内核的死锁检测工具—Lockdep的使用案例

    Linux内核的死锁检测工具—Lockdep的使用案例

    文章主要介绍了Linux内核中的死锁问题,包括死锁的类型(递归死锁和AB-BA死锁)、lockdep模块的使用方法以及实际项目中的死锁案例,通过lockdep模块,可以有效地跟踪和调试死锁问题,帮助开发者快速定位和解决问题
    2024-11-11
  • 详解Linux指令文件覆盖和文件追加

    详解Linux指令文件覆盖和文件追加

    这篇文章主要介绍了Linux指令文件覆盖和文件追加,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Ubuntu系统缺少iptables工具的解决方法

    Ubuntu系统缺少iptables工具的解决方法

    文章介绍了如何解决Docker启动失败的问题,主要原因是系统缺少iptables工具,解决方案包括在Ubuntu/Debian系统上安装iptables并重启Docker服务,此外,还详细描述了如何在离线环境下安装iptables,需要的朋友可以参考下
    2026-02-02
  • Linux系统下Tomcat使用80端口的方法

    Linux系统下Tomcat使用80端口的方法

    这篇文章主要给大家介绍了关于Linux系统下Tomcat使用80端口的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Tomcat具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 101个脚本之建立linux回收站的脚本

    101个脚本之建立linux回收站的脚本

    众所周知,linux是没有回收站的,一些人很害怕删错东西(有经验的linux管理员极少范这错误),个人不建议回收站,而应该是培养个人的安全意识。有点小跑题
    2016-08-08
  • Linux运维基础交换分区和lvm管理教程

    Linux运维基础交换分区和lvm管理教程

    这篇文章主要介绍了Linux运维基础中的交换分区和lvm管理教程,附含源码示例,有需要的朋友可以借鉴参考下,祝大家共同学习共同进步
    2021-09-09
  • Linux系统调用中断机制的全部流程

    Linux系统调用中断机制的全部流程

    这篇文章主要介绍了Linux系统调用的中断机制、工作流程、优化技术及实践,并探讨了内核实现和安全防护机制,最后总结了现代系统调用的发展趋势,需要的朋友可以参考下
    2025-12-12
  • Linux搭建NFS服务器实现Linux文件共享

    Linux搭建NFS服务器实现Linux文件共享

    本文详细介绍了在Linux环境下搭建NFS(Network File System)服务器的过程,包括安装配置、权限设置、安全加固、客户端挂载、性能优化及故障排查等内容,需要的朋友可以参考下
    2026-04-04

最新评论