使用Apache HttpClient发起一个GET HTTP请求

server/2024/12/5 4:51:40/
http://www.w3.org/2000/svg" style="display: none;">

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

它提供了广泛的功能,包括对不同HTTP方法的支持、连接管理、Cookie处理等。

无论是与RESTful API交互、下载网页内容还是自动化网页任务,Apache HttpClient 都能通过其简洁而强大的API简化这些操作。

本教程将演示如何使用Apache HttpClient发起一个GET HTTP请求,展示它的易用性和多功能性。

了解HTTP GET方法

HTTP GET方法用于从指定资源请求数据。GET请求通常用于从服务器检索数据,如网页、图片或来自RESTful API的数据。GET请求的主要特征包括:

  • 只读:GET请求用于获取数据而不对资源进行任何更改。
  • 安全:执行GET请求不应在服务器上产生副作用。
  • 幂等性:多个相同的GET请求应具有与单个请求相同的效果。
  • 可缓存:GET请求的响应可以被浏览器或代理缓存以提高性能。

示例场景

我们将创建一个简单的Java类,向JSONPlaceholder API发送GET请求并打印响应。

JSONPlaceholder API提供了一个免费的在线REST API,可用于测试和原型设计。

我们将使用/posts/1端点来检索一条帖子,该端点的URL为:https://jsonplaceholder.typicode.com/posts/1

Maven依赖

要使用Apache HttpClient,请在你的pom.xml文件中添加如下依赖:

<dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifactId><version>5.3</version>
</dependency>

Java类 - 发送GET请求

创建名为HttpClientExample的类,并使用以下代码:

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 HttpClientExample {public static void main(String[] args) {String url = "https://jsonplaceholder.typicode.com/posts/1";try (CloseableHttpClient httpClient = HttpClients.createDefault()) {HttpGet request = new HttpGet(url);try (CloseableHttpResponse response = httpClient.execute(request)) {System.out.println("响应码: " + response.getCode());String content = EntityUtils.toString(response.getEntity());System.out.println("响应内容: \n" + content);}} catch (Exception e) {e.printStackTrace();}}
}

运行示例

运行HttpClientExample类,你将在控制台看到状态码和响应内容。

输出示例

响应码: 200
响应内容: 
{"userId": 1,"id": 1,"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit","body": "quia et suscipit\nsuscipit...
}

额外配置

  • 设置自定义头:你可以通过调用HttpGet对象上的setHeader方法来设置GET请求的自定义头部信息。
  • 处理重定向:默认情况下,Apache HttpClient会自动处理重定向。你可以通过使用自定义的HttpClientBuilder来调整此行为。
  • 设置超时:可以通过RequestConfig设置连接和套接字超时。

总结

使用Apache HttpClient发起GET HTTP请求既直接又灵活。

按照本教程,你现在应该能够创建和执行GET请求、处理响应以及定制HTTP请求和响应过程中的各种方面了。

Apache HttpClient提供了一整套功能,使其成为处理Java应用程序中HTTP操作的优秀选择。

JSONPlaceholder API作为测试和原型化HTTP请求的实际而方便的来源。


http://www.ppmy.cn/server/146261.html

相关文章

HarmonyOS:应用沙箱

一、应用文件概述 应用文件&#xff1a;文件所有者为应用&#xff0c;包括应用安装文件、应用资源文件、应用缓存文件等。 设备上应用所使用及存储的数据&#xff0c;以文件、键值对、数据库等形式保存在一个应用专属的目录内。该专属目录我们称为“应用文件目录”&#xff0c;…

Mybatis Plus 增删改查方法(一、增)

先定义一个简单的测试表&#xff0c;执行脚本如下&#xff1a; create table user(id bigint primary key auto_increment,name varchar(255) not null,age int not null default 0 check (age > 0) ); 根据Spingbootmybatisplus的结构根据表自行构建结构&#xff0c;大致…

MySQL中的锁与MVCC

目录 锁 共享锁&#xff08;Shared Locks&#xff09; 排他锁&#xff08;Exclusive Locks&#xff09; 意向锁&#xff08;Intention Locks&#xff09; 记录锁&#xff08;Record Locks&#xff09; 临键锁&#xff08;Next-Key Locks&#xff09; MVCC机制 MVCC的核心…

【线上问题记录 | 排查网络连接问题】

问题描述 现在有我们程序是部署在服务器A的&#xff0c;A链接的是B。程序从B的redis进行存储和取数据的。 我们的业务是: 信息展示&#xff0c;也就是如果发现机器有异常了&#xff0c;实时进行监控。突然发现有一天&#xff0c;信息显示延迟了。 然后我们就开始排查究竟什么原…

在xml的sql的子查询中使用row_number over之后再在mapper的接口层传入Page对象实现分页功能,出现Bug

1.报错信息复现&#xff1a; Mapper接口&#xff1a; List<UserInfo> queryUserPage(Param(“vo”) UserQury query,Page<UserInfo> page); UserQury 类中的状态字段&#xff1a; ApiModelproperty(“状态”) private String status; Xml中sql如下&#xff1…

详解SpringCloud集成Camunda7.19实现工作流审批(二)

本章将分享的是camunda流程设计器--Camunda Modeler的基本使用&#xff08;对应camunda版本是7.19&#xff09;&#xff0c;包括bpmn流程图画法&#xff0c;各种控件使用以及一些日常业务场景的流程图的实现 参考资料&#xff1a; Camunda BPMN 基础组件-CSDN博客 Camunda: Exe…

【PX4_Autopolite飞控源码】中飞控板初始化过程中的引脚IO控制(拉低/拉高)

先选择自己飞控板支持的硬件平台 打开对应的路径我的是Desktop/px4/PX4-Autopilot/boards/zhty/nora 找到board_config.h文件&#xff0c;打开nora后再往下去找Desktop/px4/PX4-Autopilot/boards/zhty/nora/src/borad_config.h 打开后可以看到有很多GPIO引脚的定义&#xff0c…

UPLOAD LABS | PASS 01 - 绕过前端 JS 限制

关注这个靶场的其它相关笔记&#xff1a;UPLOAD LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;过关流程 本关的目标是上传一个 WebShell 到目标服务器上&#xff0c;并成功访问&#xff1a; 我们直接尝试上传后缀为 .php 的一句话木马&#xff1a; 如上&#xff0c;靶场弹…