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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • request获取请求参数_request.getquerystring()

    request获取请求参数_request.getquerystring()IachievethePOSTrequestinAndroidanduploadapicturetoservicesuccessful.IdidnotusethesetRequestPropertyfunction;ButIwanttoknowwhattheeffectaboutthisfunctionis.Thisistheco…

    2022年9月11日
  • SSM整合redis

    SSM整合redis一、关于SSM整合Redis需要知道的一些小知识在学习Redis的时候,大家应该知道,JAVA操作redis通常使用的是Jedis,通过java代码来操作redis的数据存储读取等操作,用过的人应该知道,Jedis客户端已经足够简单和轻量级了,但是呢,在此同时,Spring也为Redis提供了支持,就是在Spring-data模块中的Spring-Data-Redis(SDR),它一部分是基于Jed

    2022年4月30日
  • Java学习笔记-1

    一、面向对象是什么?面向对象是一种思想,世间万物都可以看成一个对象,这里只讨论面向对象编程(OOP),java是一个支持并发、基于类和面向对象的计算机编程语言,面向对象开发的优点:1.代码开发模块化,更易维护和修改;2.代码复用性强;3.增强代码的可靠性和灵活性;4.增强代码的可读性。面向对象的四大基本特征:抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不…

    2022年4月17日
  • 关于EnterCriticalSection()(转)「建议收藏」

    关于EnterCriticalSection()(转)「建议收藏」好文章的链接:https://blog.csdn.net/Pro2015/article/details/88786377QF自己的总结:之前一直都会看到EnterCriticalSection

    2022年7月3日
  • CentOS7使用iptables防火墙开放端口

    CentOS7使用iptables防火墙开放端口

    2021年10月29日
  • pytorch转tensorflow_语义分割样本不均衡

    pytorch转tensorflow_语义分割样本不均衡憨批的语义分割重制版7——TF2搭建自己的Unet语义分割平台注意事项学习前言什么是Unet模型代码下载Unet实现思路一、预测部分1、主干网络介绍2、加强特征提取结构3、利用特征获得预测结果二、训练部分1、训练文件详解2、LOSS解析训练自己的Unet模型注意事项这是重新构建了的Unet语义分割网络,主要是文件框架上的构建,还有代码的实现,和之前的语义分割网络相比,更加完整也更清晰一些。建议还是学习这个版本的Unet。学习前言还是快乐的pytorch人。什么是Unet模型Unet是一个优秀

    2022年8月21日

发表回复

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

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