Java项目对接天眼查
文章目录
天眼查接口以及token获取
1、登录天眼查开放平台
天眼查开放平台地址天眼查开放平台
进入之后点击有上方的登录注册,输入自己的账号密码进行登录
2、找到数据接口,找到token,调用示例
登录账号以后进入首页进入数据接口
这里面是所以的接口,因为项目需要,我这边选择搜索接口
进来后里面有接口地址,接口信息这里点击测试API进去获取我们的token如下下图。
Java代码以及返回值
1、config
package com.readao.myinfo.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
@Data
public class TianYanChaConfig {
@Value("${tianyancha.token}")
private String token;
@Value("${tianyancha.url}")
private String url;
}
2、controller层
@GetMapping("/getCorporateInformation")
@ApiOperationSupport(order = 5)
@ApiImplicitParams({
@ApiImplicitParam(name = "current", value = "当前页", paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "size", value = "每页的数量", paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "keyWork", value = "搜索关键字(公司名称或社会统一信用代码)", paramType = "query", dataType = "String")
})
@ApiOperation(value = "天眼查,企业基本信息查询", notes = "传入条件")
public R<IPage<TeamMiddle>> getCorporateInformation(Long current, Long size, String keyWork){
IPage<TeamMiddle> teamMiddleIPage = teamMiddleService.getCorporateInformation(current, size, keyWork);
return R.data(teamMiddleIPage);
}
3、service层
/**
* (天眼查)企业基本信息查询
* @param pageNum 当前页
* @param pageSize 每页多少条
* @param keyWork 搜索关键字
* @return
*/
@Override
public IPage<TeamMiddle> getCorporateInformation(Long pageNum, Long pageSize, String keyWork) {
// 调用天眼查数据查询接口
String messageByUrlToken = getMessageByUrlToken(this.getUrl(tianYanChaConfig.getUrl() + "?word=",keyWork,pageSize,pageNum));
// 转换数据格式
JSONObject jsonObject = JSONObject.parseObject(messageByUrlToken);
// 获取数据总条数
Long total = jsonObject.getJSONObject("result").getLong("total");
// 获取数据信息
List<TeamMiddle> teamMiddleList = (List<TeamMiddle>)jsonObject.getJSONObject("result").get("items");
// 创建返回值对象
IPage<TeamMiddle> teamMiddleIPage = new Page<>();
// 填入返回值数据
teamMiddleIPage.setCurrent(pageNum);
teamMiddleIPage.setSize(pageSize);
teamMiddleIPage.setTotal(total);
teamMiddleIPage.setRecords(teamMiddleList);
return teamMiddleIPage;
}
/**
* 拼接URL,注意前面定义的url后面拼接的参数,因为每个接口的参数都是不同的但是企业的标准是相同的(keyWork)
* @param url
* @return
*/
public String getUrl(String url,String keyWork, Long pageSize, Long pageNum){
if(ObjectUtil.isNotEmpty(keyWork)){
url += keyWork;
}else {
// 自定义异常处理
throw new ServiceException("搜索条件不能为空!!!");
}
if(ObjectUtil.isNotEmpty(pageSize)){
url += "&pageSize=" + pageSize;
}
if(ObjectUtil.isNotEmpty(pageNum)){
url += "&pageNum=" + pageNum;
}
return url;
}
/**
* @param path 对⽅或第三⽅提供的路径
* @return
*/
public String getMessageByUrlToken(String path){
String result="";
try {
// 根据地址获取请求
HttpGet request = new HttpGet(path);//这⾥发送get请求
// 获取当前客户端对象
request.setHeader("Authorization", tianYanChaConfig.getToken());
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// 通过请求对象获取响应对象
HttpResponse response = httpClient.execute(request);
// 判断⽹络连接状态码是否正常(0--200都数正常)
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
result = EntityUtils.toString(response.getEntity(),"utf-8");
}
} catch (Exception e) {
// TODO Auto-generated catch block e.printStackTrace();
e.printStackTrace();
}
return result;
}
4、实体类
package com.xxx.xxxx.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class TeamMiddle {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long id;
/**
* 公司名
*/
private String name;
/**
* 统一社会信用代码
*/
private String creditCode;
/**
* 注册号
*/
private String regNumber;
/**
* 经营状态
*/
private String regStatus;
/**
* 成立日期
*/
private Date estiblishTime;
/**
* 注册资本
*/
private String regCapital;
/**
* 机构类型-1:公司;2:香港企业;3:社会组织;4:律所;5:事业单位;6:基金会;7-不存在法人、注册资本、统一社会信用代码、经营状态;8:台湾企业;9-新机构
*/
private Integer companyType;
/**
* 组织机构代码
*/
private String orgNumber;
/**
* 1-公司 2-人
*/
private Integer type;
/**
* 省份
*/
private String base;
/**
* 法人
*/
private String legalPersonName;
/**
* 匹配原因
*/
private String matchType;
}
4、测试结果
总结
例如:以上就是我自己的实例,有什么不足请大家提出。
注:本文基于博客java对接天眼查接口,天眼查提供案例方法过期最新案例
以及个人使用过程中遇到的问题
参考文献:https://blog.csdn.net/adminwxc/article/details/123793608