java对接第三方接口「建议收藏」

java对接第三方接口「建议收藏」1.准备与第三方接口对接的账号配置到了Apollo上面@Value(“${taofake.appId}”) privateStringappId; @Value(“${taofake.url}”) privateStringurl; @Value(“${taofake.appSecret}”) privateStringappSecret;2.准备用于接受接…

大家好,又见面了,我是你们的朋友全栈君。

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() { 
   
			@Override
			public 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.调用第三方接口

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

在这里插入图片描述

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

在这里插入图片描述

与第三方接口对接就完成了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133282.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月9日 下午2:00
下一篇 2022年6月9日 下午2:16


相关推荐

  • C语言中按位取反_数组按位取反

    C语言中按位取反_数组按位取反与运算:&两者都为1为1,否则为01&1=1, 1&0=0, 0&1=0, 0&0=0或运算:|两者都为0为0,否则为11|1=1, 1|0=1, 0|1=1,0|0=0非运算:~1取0,0取1~1=0,~0=1~(10001)=01110异或运算两者相等为0,不等为11^1=0,

    2022年8月15日
    16
  • 画用例图_uml活动图怎么画

    画用例图_uml活动图怎么画用例图。组成:系统边界。参与者。用例。关系。参与者:Actor不是人,而是指参与用例时担当的角色。如果一个角色的操作是由另一个角色代理完成的,请建立该角色到另外角色之间的依赖。怎样识别参与者呢? 是谁向系统提供的信息呢. 谁向系统获取信息。 谁操作系统。 系统使用哪些外部资源 系统是否和已经存在的系统交互 系统、子系统或类与外…

    2025年9月26日
    8
  • linux修改用户名的命令_linux修改用户名和密码

    linux修改用户名的命令_linux修改用户名和密码centos7修改已存在用户的用户名目标:将centos用户更名为laizili第一步:登出要修改用户名的用户(没有注销登录的用户无法修改)第二步:以root身份登录终端;进行如下操作:vim/etc/passwd…

    2026年1月20日
    8
  • 如何将word转为html_word转html工具

    如何将word转为html_word转html工具推荐可以试用FreeSpire.DocforJava免费控件哦,它支持将htmlstring和htmlfile转word,代码操作简单,转换效果也很好。Htmlfile转wordimportcom.spire.doc.*;importcom.spire.doc.documents.XHTMLValidationType;publicclasshtmlFileToWord{pu…

    2022年10月12日
    7
  • 多层感知器-原理

    多层感知器-原理深度学习之神经网络神经网络的出现神经网络的首次出现来美国神经生物学家沃伦 麦克洛克 WarrenMcCull 和数学家沃尔特 皮茨 WalterPitts 对生物神经元建模 首次提出了一种形式神经元模型 被称为 M P 模型 结果之和如果大于阈值 则输出 1 否则输出 0 输入和输出均为 0 或 1 感知器感知器能够根据训练样本自动获取样本的组合 1 训练方式为有监督学习 即需要设定训练样

    2026年3月26日
    2
  • PHPWAMP集成环境Zend组件的相关介绍,环境默认的PHP运行模式「建议收藏」

    PHPWAMP集成环境Zend组件的相关介绍,环境默认的PHP运行模式「建议收藏」PHPWAMP集成环境Zend组件的相关介绍,站点管理默认已经全部安装Zend解密

    2022年6月28日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号