java httpclient调用接口

news/2025/1/23 22:59:12/文章来源:https://www.cnblogs.com/gaoguanghui/p/18688749
  1. 需要引入依赖
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version>
</dependency>
  1. 使用案例
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.net.URI;
import java.nio.charset.Charset;public class UseHttpclientDemo {public static void main(String[] args) {String postResultData = postResult();if (postResultData == null) {System.out.println("{\"errno\":-1,\"errmsg\":\"fail\",\"message\":\"调用接口获取数据失败\"}");return;}System.out.println(postResultData);String getResultData = getResult();if (getResultData == null) {System.out.println("{\"errno\":-1,\"errmsg\":\"fail\",\"message\":\"调用接口获取数据失败\"}");return;}System.out.println(getResultData);}public static String postResult() {//超时时间/*** RequestConfig.DEFAULT == 一直请求* RequestConfig.DEFAULT == RequestConfig.custom()*          .setConnectTimeout(-1).setConnectionRequestTimeout(-1).setSocketTimeout(-1)*          .build();*/RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(3000) //连接主机超时时间.setConnectionRequestTimeout(4000) //请求超时时间.setSocketTimeout(5000) //数据读取超时时间.build();//请求体StringEntity requestBody = new StringEntity("{\"invoke_info\":{\"pos_1\":[{}],\"pos_2\":[{}],\"pos_3\":[{}]}}", ContentType.APPLICATION_JSON);//http客户端CloseableHttpClient httpClient = HttpClients.createDefault();//post请求HttpPost postRequest = new HttpPost();postRequest.setConfig(requestConfig);postRequest.setURI(URI.create("https://ug.baidu.com/mcp/pc/pcsearch")); //请求路径postRequest.addHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString()); //请求头postRequest.addHeader("xxx","xxx");postRequest.addHeader("xxx","xxx");postRequest.setEntity(requestBody); //请求体String result = null;try {//发送请求CloseableHttpResponse response = httpClient.execute(postRequest);if (response == null || response.getStatusLine() == null || response.getStatusLine().getStatusCode() !=200) {return null;}/*** response.getHeaders("xxx"); //响应头* response.getEntity().getContent(); //响应体(获取文件数据)* EntityUtils.toString(response.getEntity(), Charset.defaultCharset()); //响应体(获取json数据)*///响应内容String responseBody = EntityUtils.toString(response.getEntity(), Charset.defaultCharset()); //响应体(获取json数据)result = responseBody;} catch (ClientProtocolException e) {//接口调用异常或接口数据传输异常System.out.println("接口调用异常:"+e);System.out.println(ExceptionUtils.getStackTrace(e));} catch (IOException e) {//接口数据传输异常System.out.println("接口调用异常:"+e);System.out.println(ExceptionUtils.getStackTrace(e));} finally {if (httpClient != null) {try {httpClient.close();} catch (IOException e) {//关闭httpclient失败System.out.println("关闭httpclient失败:");System.out.println(ExceptionUtils.getStackTrace(e));}}}return result;}public static String getResult() {//超时时间/*** RequestConfig.DEFAULT == 一直请求* RequestConfig.DEFAULT == RequestConfig.custom()*          .setConnectTimeout(-1).setConnectionRequestTimeout(-1).setSocketTimeout(-1)*          .build();*/RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(3000) //连接主机超时时间.setConnectionRequestTimeout(4000) //请求超时时间.setSocketTimeout(5000) //数据读取超时时间.build();//http客户端CloseableHttpClient httpClient = HttpClients.createDefault();//post请求HttpGet getRequest = new HttpGet();getRequest.setConfig(requestConfig);getRequest.setURI(URI.create("https://dict.youdao.com/login/acc/query/accountinfo?withCredentials=true&caKu=3")); //请求路径+入参getRequest.addHeader(HTTP.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString()); //请求头getRequest.addHeader("xxx","xxx");getRequest.addHeader("xxx","xxx");String result = null;try {//发送请求CloseableHttpResponse response = httpClient.execute(getRequest);if (response == null || response.getStatusLine() == null || response.getStatusLine().getStatusCode() !=200) {return null;}/*** response.getHeaders("xxx"); //响应头* response.getEntity().getContent(); //响应体(获取文件数据)* EntityUtils.toString(response.getEntity(), Charset.defaultCharset()); //响应体(获取json数据)*///响应内容String responseBody = EntityUtils.toString(response.getEntity(), Charset.defaultCharset()); //响应体(获取json数据)result = responseBody;} catch (ClientProtocolException e) {//接口调用异常或接口数据传输异常System.out.println("接口调用异常:"+e);System.out.println(ExceptionUtils.getStackTrace(e));} catch (IOException e) {//接口数据传输异常System.out.println("接口调用异常:"+e);System.out.println(ExceptionUtils.getStackTrace(e));} finally {if (httpClient != null) {try {httpClient.close();} catch (IOException e) {//关闭httpclient失败System.out.println("关闭httpclient失败:");System.out.println(ExceptionUtils.getStackTrace(e));}}}return result;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/873906.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9. SpringCloud Alibaba Sentinel 流量控制、熔断降级、系统负载,热点规则的部署设置讲解

9. SpringCloud Alibaba Sentinel 流量控制、熔断降级、系统负载,热点规则的部署设置讲解 @目录9. SpringCloud Alibaba Sentinel 流量控制、熔断降级、系统负载,热点规则的部署设置讲解1. Sentinel 是什么?2. Sentinel 控制台3. Sentinel 下载&安装&运行4. Sentine…

MySQL训练营-慢查询诊断问题

慢查询相关参数和建议配置 slow_query_log + long_query_time 日志开关,是否记慢查询日志以及超过多长时间判定为慢查询。 查看参数设置:SHOW VARIABLES LIKE slow_query_log; SHOW VARIABLES LIKE long_query_time;实践建议:set global long_query_time=1; 分析型业务,set…

并发编程 - 线程同步(一)

线程同步确保多线程环境下共享资源安全使用,避免竞争条件和数据不一致。实现方式有避免资源共享、用户模式同步、内核模式同步和混合模式同步。经过前面对线程的尝试使用,我们对线程的了解又进一步加深了。今天我们继续来深入学习线程的新知识 —— 线程同步。01、什么是线程…

API接口开发设计

写接口看似是一个很简单的事情,但是往往越简单的事情越不容易做好,让我们看看如何写好一个接口。 01. 什么是接口 接口其实是一种规范,在生活中随处可见,比如:不同厂商的水管使用统一的水管接口对接、电脑厂商和配件厂商按照统一的 USB 接口标准进行生产完成配对、应用程序…

FZU ACM寒假集训专题一

只有前四题是自己做的,都ac。 做题思路: 前三题比较简单。第四题想法是,一个一个读字母,按照asc码值分别存储个数,用轮数减个数得出还缺几个,最后加在一起。 中间因为不清楚scanf,让getchar读到换行符出错了。 学习总结: 本专题学习了时空复杂度的计算,c++语法糖,还有…

谷歌泰坦:Transformer之后的AI时代?

介绍 2017年,谷歌发布了一篇具有革命性意义的论文,题为《Attention is All You Need》(注意力是你所需要的一切)。这篇论文引发了我们今天所经历的AI革命,并引入了Transformer模型。Transformer已经成为如今几乎所有顶级大型语言模型(LLM)的核心架构。 Transformer的优势…

2025.1.23冠词

错误分析: 对于冠词知识点掌握不透彻 需掌握知识点: ‌冠词‌是英语语法中的重要概念,主要分为不定冠词(a/an)和定冠词(the),此外还有零冠词。冠词本身不能单独使用,也没有词义,主要用于帮助指明名词的含义。‌ 不定冠词(a/an) ‌用法‌:不定冠词用于单数可数名词…

2025多校冲刺省选模拟赛7

2025多校冲刺省选模拟赛7\(T1\) A. 三色卡(card) \(0pts\)如果存在一个小矩形和大矩形的大小相同,此时另外两个矩形可以任意放,贡献是容易计算的。否则至少需要一个小矩形覆盖大矩形的两个角,通过交换长、宽钦定完全覆盖行的矩形比完全覆盖列的矩形的数量多。完全覆盖行的矩…

重试机制与 CompletableFuture 拓展

重试机制与 CompletableFuture 拓展 禁止转载。 本文旨在讨论重试机制的特点和策略,分析常用重试类库的实现,讨论为 CompletableFuture 添加重试机制的方法。文章首发同名公众号,欢迎关注。 重试示例 以下是一个常见的使用异步重试的例子,当我们需要重试功能时,只需调用 r…

DL00765-光伏故障检测高分辨率无人机热红外图像细粒度含数据集4000+张

光伏发电作为清洁能源的重要组成部分,近年来得到了广泛应用。然而,随着光伏电站规模的扩大,光伏组件在运行过程中可能会出现各种故障,如热斑、遮挡、接线盒故障等。这些故障不仅会影响光伏电站的发电效率,还可能导致更严重的安全隐患。因此,准确、及时地检测并分类这些故…

VMware安装RHEL7.9

VMware安装 可以选择官网下载或者使用其他网盘资源下载。 需要注意的是,现在官网下载需要注册其账号。 下面是安装的详细步骤: 1.找到文件所在路径。双击打开之后,可能会出现环境初始化重启。重启即可。然后再次双击打开此软件。2.勾选《我接受许可协议中的条款》。3.选择安…

【二叉树】用数组给出二叉树层序遍历序列,建树以及遍历问题

传递悄悄话层序遍历数组形式的下标如下#include <algorithm> #include <cstring> #include <iostream>using namespace std;const int N = 1010, M = N * 2;int n; int h[N], e[M], ne[M], idx; int v[N], dist[N]; bool st[N];void add(int a, int b) {e[id…