java对接第三方接口

article/2025/8/27 6:21:11

1.准备与第三方接口对接的账号

配置到了Apollo上面

在这里插入图片描述

    @Value("${taofake.appId}")private String appId;@Value("${taofake.url}")private String url;@Value("${taofake.appSecret}")private String appSecret;

2.准备用于接受接口返回结果的实体类在这里插入图片描述

3.准备发HTTP请求的工具类

在这里插入图片描述
在这里插入图片描述

http工具类

package cn.zhaocha.common.utils;import java.io.IOException;
import java.util.Map;import cn.zhaocha.vo.BaseResponseVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;@Slf4j
public class OKHttpUtil {private static final Logger logger = LoggerFactory.getLogger(OKHttpUtil.class);private static OkHttpClient client = getClient();public static OkHttpClient getClient() {if (client == null) {client = genericClient();// 创建OkHttpClient对象}return client;}public static OkHttpClient genericClient() {OkHttpClient httpClient = new OkHttpClient.Builder().addInterceptor(new Interceptor() {@Overridepublic Response intercept(Chain chain) throws IOException {Request request = chain.request().newBuilder()// .addHeader("Content-Type", "text/html; charset=gb2312")// .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")// .addHeader("Accept-Encoding", "gzip, deflate")// .addHeader("Connection", "keep-alive")// .addHeader("Accept", "*/*")// .addHeader("User-Agent", "Mozilla/5.0 (Linux; Android 9.0.0; MI 6 Build/OPR1.170623.032; wv) AppleWebKit/537.36 (KHTML, like Gecko)// Version/4.0 Chrome/62.0.3202.84 Mobile Safari/537.36/Android/globalscanner/4.00")// .addHeader("Accept-Language", "zh-CN,en-US;q=0.9").addHeader("ApiVersion", "1.0")// .addHeader("X-Requested-With", "com.globalscanner").build();return chain.proceed(request);}}).build();return httpClient;}public static String postAsync(String urlStr, Map<String, String> paramMap, Callback callback) {return postAsync(urlStr, paramMap, callback, null);}public static String postAsync(String urlStr, Map<String, String> paramMap, Callback callback, Map<String, String> header) {Request.Builder oneBuilder = getOneBuilder(urlStr, paramMap, header);Request request = oneBuilder.build();getClient().newCall(request).enqueue(callback);return null;}private static Request.Builder getOneBuilder(String urlStr, Map<String, String> paramMap, Map<String, String> header) {// 创建表单请求体FormBody.Builder formBody = new FormBody.Builder();for (String key : paramMap.keySet()) {formBody.add(key, paramMap.get(key));}// 创建Request 对象。//传递请求体Request.Builder postBuild = new Request.Builder().url(urlStr).post(formBody.build());if (header != null && header.size() > 0) {for (String key : header.keySet()) {postBuild.addHeader(key, header.get(key));}}return postBuild;}private static Request.Builder getGetBuilder(String urlStr, Map<String, String> paramMap, Map<String, String> header) {HttpUrl.Builder urlBuilder = HttpUrl.parse(urlStr).newBuilder();if (paramMap != null) {for (String key : paramMap.keySet()) {urlBuilder.setQueryParameter(key, paramMap.get(key));}}Request.Builder requestBuilder = new Request.Builder().url(urlBuilder.build()).headers(header == null ? new Headers.Builder().build() : Headers.of(header)).get();return requestBuilder;}/*** 同步请求*/public static <T> BaseResponseVo<T> post(String urlStr, Map<String, String> paramMap, Class clazz) {return post(urlStr, paramMap, null, clazz);}public static <T> BaseResponseVo<T> post(String urlStr, Map<String, String> paramMap, Map<String, String> header, Class clazz) {Request.Builder oneBuilder = getOneBuilder(urlStr, paramMap, header);Request request = oneBuilder.build();try {log.info("请求:OKHttpUtil-post-日志信息请求参数:" + urlStr + " " + paramMap.toString());Response response = client.newCall(request).execute();if (response != null && response.isSuccessful()) {if (response.body() == null) {log.info("响应:OKHttpUtil-post-日志信息响应结果未空:");return BaseResponseVo.err("1", "response.body内容为空", null);}String content = response.body().string();log.info("响应:OKHttpUtil-post-日志信息响应结果:" + content);// String content ="{error_msg: \"成功\",error_code: 0}";// String content = "{error_msg: \"失败\",error_code: 1}";if (!StringUtils.isEmpty(content)) {T obj = (T) FastJsonUtil.jsonToBean(content, clazz);return BaseResponseVo.succ("0", "获取成功", obj);}}} catch (IOException e) {e.printStackTrace();return BaseResponseVo.err(e.toString());}return BaseResponseVo.err("1", "获取失败", null);}public static <T> BaseResponseVo<T> get(String urlStr, Map<String, String> paramMap, Map<String, String> header, Class clazz) {Request.Builder oneBuilder = getGetBuilder(urlStr, paramMap, header);Request request = oneBuilder.build();try {log.info("请求:OKHttpUtil-post-日志信息请求参数:" + urlStr + " " + paramMap.toString());Response response = client.newCall(request).execute();if (response != null && response.isSuccessful()) {if (response.body() == null) {log.info("响应:OKHttpUtil-get-日志信息响应结果未空:");return BaseResponseVo.err("1", "response.body内容为空", null);}String content = response.body().string();log.info("响应:OKHttpUtil-get-日志信息响应结果:" + content);if (!StringUtils.isEmpty(content)) {T obj = (T) FastJsonUtil.jsonToBean(content, clazz);return BaseResponseVo.succ("0", "获取成功", obj);}}} catch (IOException e) {e.printStackTrace();return BaseResponseVo.err(e.toString());}return BaseResponseVo.err("1", "获取失败", null);}
}

4.调用第三方接口

黄色线表示访问第三方接口

在这里插入图片描述

现在我们可以来测试一下了

在这里插入图片描述

与第三方接口对接就完成了

http://chatgpt.dhexx.cn/article/6ggJikGj.shtml

相关文章

和第三方接口对接总结

接口对接分为两种形式&#xff1a; 我方A公司提供接口给B公司&#xff0c;B公司进行一些操作时调用我们的接口进行实现。 例&#xff1a;A开发会员等级同步接口&#xff0c;供B同步会员等级到B系统。B会员等级的变动需要调用A接口主动推送给A&#xff08;即更新会员卡等级&am…

如何优雅的调用第三方接口

点击上方蓝色“java大数据修炼之道”, 选择“设为星标” 每晚九点: 技术干货 &#x1f449; 必定奉上 来源&#xff1a;blog.csdn.net/qq_35860138/article/details/82967727 在项目开发中经常会遇到调用第三方接口的情况&#xff0c;比如说调用第三方的天气预报接口。 # 使用流…

Java 调用第三方接口,实战来了!

在项目开发中经常会遇到调用第三方接口的情况&#xff0c;比如说调用第三方的天气预报接口。 1、准备工作&#xff1a; 在项目的工具包下导入HttpClientUtil这个工具类&#xff0c;或者也可以使用Spring框架的restTemplate来调用&#xff0c;上面有调用接口的方法【分为Get和Po…

涉及到第三方支付接口该如何测试?

现在有不少测试朋友做的项目中&#xff0c;可能也会涉及到支付相关的功能。比如&#xff1a;做商城的&#xff0c;做游戏的以及其他在线交易的网站、APP等。如果支付出了问题&#xff0c;或者用户拿少的钱通过篡改请求数据购买大金额的商品&#xff0c;如果是实物的话&#xff…

第三方支付api接口是什么?

由于移动互联网的不断发展&#xff0c;从而产生了第三方和第四方支付&#xff0c;而第三方成为商业交易的环节不可缺失的一个总要部分&#xff0c;作为第三方&#xff0c;通过央行的授权&#xff0c;一般都覆盖了很多支付通道&#xff0c;给予需求企业最便捷、高效的接入方式&a…

Java 调用第三方接口方法

Java 调用第三方接口方法 一、 通过JDK网络类Java.net.HttpURLConnection 1.java.net包下的原生java api提供的http请求 使用步骤&#xff1a; 1、通过统一资源定位器&#xff08;java.net.URL&#xff09;获取连接器&#xff08;java.net.URLConnection&#xff09;。 2、设…

Java调用第三方接口示范

人工智能&#xff0c;零基础入门&#xff01;http://www.captainbed.net/inner 在项目开发中经常会遇到调用第三方接口的情况&#xff0c;比如说调用第三方的天气预报接口。 使用流程 【1】准备工作&#xff1a;在项目的工具包下导入HttpClientUtil这个工具类&#xff0c;或者…

调用第三方接口

快速使用&#xff1a;调用第三方接口获取数据&#xff08;简易版&#xff09;_myme95的博客-CSDN博客_调用第三方接口 controller层 private String jokeApiKey "40ff81dexxxxxxxxxxxx97a39d39";AutowiredApiService apiService;/*** 京东万象-笑话api*/GetMapping(…

国内7款API供应平台功能对比及详细介绍

我们都知道一句话“巧妇难为无米之炊”&#xff0c;数据源就是数据产生价值中的那些大米。那大数据时代企业需要哪些数据呢&#xff1f;根据我个人理解我觉得可以大致分为以下几类&#xff1a; 1、&#xff08;内部&#xff09;企业自身业务生产经营环节产生的内部数据【包括销…

Java Web系统常用的第三方接口

1. Web Service 接口 1.1 接口方式说明和优点 在笔者的开发生涯中&#xff0c;当作为接口提供商给第三方提供接口时&#xff0c;以及作为客户端去调用第三方提供的接口时&#xff0c;大部分时候都是使用 Web Service接口&#xff0c; Web Service作为接口使用广泛的…

进制转换2

进制之间的转换 本文转自&#xff1a;http://www.bloghome.cn/posts/38472 数学 /bullly 发表于2006-07-11, 18:08 不同进制之间的转换纯粹是数学上的计算。不过&#xff0c;你不必担心会有么复杂&#xff0c;无非是乘或除的计算。 生活中其实很多地方的计数方法都多少有点不…

计算机二进制

二进制转十进制 不考虑符号为 十进制转二进制 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数…

-2进制

http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id4435 懵~ 后来问别人&#xff0c;他让我试着用二进制反推十进制&#xff0c;就晓得了(用&#xff08;-2&#xff09;^n&#xff09;。 这个是学长写的代码 //我写的时候&#xff0c;将它先变成二进制&#xff0c;再给每…

进制.2

转自&#xff1a; http://www.d2school.com/bhcpp_book/5_8.php 5.8.1 十六进制 说到十六进制&#xff0c;首先会问&#xff1a;总共只有10个阿拉伯数字&#xff1a;0、1、2、3、4、5、6、7、8、9&#xff0c;如何表达“逢16进1”的概念呢&#xff1f;方法是用英文字母&#x…

二进制及二进制转换

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2&#xff0c;进位规则是“逢二进一”&#xff0c;借位规则是“借一当二” 二进制数&#xff08;binaries&#xff09;是逢2进位的进位制&#xff0c;0、1是基本算符 [2] &#xff1…

二进制?十进制!

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 给定两个十进制整数 : AAA,BBB 你需要把它们的二进制形式以十进制的运算法则相加输出结果。 例如&#xff1a; A3,B2A 3 , B 2A3,B2 的时候&#xff0c;AAA 的二进制表示是 : 111111 , BB…

关于二进制???

文章目录 二进制二进制转化为十进制十进制转化成二进制无符号数和有符号数原码反码补码 二进制的计算规则 二进制 二进制转化为十进制 二进制是一套计数方法&#xff0c;每个数位有0、1两种可能&#xff0c;类比在日常生活中我们使用的十进制&#xff0c;每个数位有0-9十种可…

二进制及二进制的转换

二进制&#xff08;binary&#xff09;是在数学和数字电路中指以2为基数的记数系统&#xff0c;是以2为基数代表系统的二进位制。这一系统中&#xff0c;通常用两个不同的符号0&#xff08;代表零&#xff09;和1&#xff08;代表一&#xff09;来表示 [1] 。数字电子电路中&a…

二进制转换

1、十进制数45转换为二进制 &#xff08;1&#xff09;除二取余法 除数被除数余数24512220211125122021120 自下往上&#xff1a;101101 &#xff08;2&#xff09;2的幂做加法 45 32 841 对应的是101101 2、二进制转负整数 以11010011为例子 先减1 11010010 按…

什么是二进制,进制之间是如何转换的,浅显易懂的,一看就会

什么是二进制呢? 二进制数据是用0和1两个数码来表示的数,它的基数为2,进位规则是逢二进一 加法:000;101;011;110(等价于10,向前进一) 案例(前面用0补齐) 1110,10111,111100,1001101,1011110,1101111,11111000 ... 减法: 0&#xff0d;00&#xff0c;1&#xff0d;01&#xf…