java - 如何从 Java 发送 HTTP 请求
问题描述
我正在创建 java 模块来解析 JSON 文件。
要接收文件,我需要发送 HTTP 请求。当我使用 curl 我的请求如下所示:
curl -X GET "https://***" -H "accept: application/json" -H "apikey: ***"
如何从 Java 发送等效的 HTTP 请求
解决方案
Java 有很多使用 HTTP 的选项。
选项1
从 Java 9 开始,有一个内置的 HTTP 客户端。因此,您可以使用它来创建请求,而无需任何第三方库。
一个简单的例子是这样的:
HttpRequest request2 = HttpRequest.newBuilder()
.uri(new URI("some url"))
.header("someHeader", "value1")
.header("anotherHeader", "value2")
.GET()
.build();
有关更多示例,请参见此处
选项 2
使用第三方库,有很多:OkHttpClient,更“老派”的Apache Http Client (HttpComponents
选项 3
如果您使用的是 spring,则可以考虑使用 Spring 的 WebClient。Spring 中也有像 RestTemplate 这样的包装器可以派上用场,但这真的取决于你想使用什么。
许多客户端都带有应该正确设置的 http 连接池。此外,在您的示例中,我看到您使用 https - 所有这些客户端都支持它,但应该正确设置它。
推荐阅读
- python - TemplateDoesNotExist 位于 /learning_logs/index.html
- python - 为什么这段代码显示内存错误?可能是while循环有问题
- javascript - 如何在 React Native 中进行预取并将数据持久化到本地存储而不阻塞 UI?
- javascript - React-Hooks:在 ContextAPI 中未定义“警报”
- c++ - 双端队列的容量
- tensorflow - AttributeError:模块'tensorflow'没有在Pycharm中运行的属性'compat'
- azure - Azure:列出服务主体的权限
- postgresql - PostgreSQL 中的慢事务处理
- laravel - 我正在尝试使用 WhereAs 从两个带有 laravel 的表中获取记录
- python-3.x - Python - 在 ML 代码中。出现错误:IndexError:列表索引超出范围