java对接天眼查接口
- 1、先了解天眼查是用来做什么的
- 2、确定账号
- 3、登录账号,找到数据接口,找到token,调用示例
1、先了解天眼查是用来做什么的
天眼查,是中国领先的商业查询平台 ,已收录全国近3亿家社会实体信息,300多种维度信息及时更新 。截至2020年,天眼查用户覆盖超3亿 ,长期稳居行业第一。2021年3月,旗下可信企业服务平台天眼企服升级发布,天眼查正在加速构建以“查公司、开公司”为核心的的天眼生态。(内容来自百度百科)
2、确定账号
确定账号这一步非常的重要,这个账号必须要已经和天眼查官方那边进行合作了,天眼查官方会根据你们公司提供的业务需求信息,提供你们需要的接口。每个账号都会有不同的官方特制的token,这个token就是你访问天眼查接口的关键。
3、登录账号,找到数据接口,找到token,调用示例
登录账号以后进入首页进入数据接口
这里面是这个账号已开通的接口,我这里随便点一个进去
进来后里面有接口地址,接口信息这里点击测试API进去获取我们的token如下下图。
这里简单介绍下这五块的内容
上图里面一共有五大块,接口信息、错误代码、示例代码、接口文档、升级版本。
这里只介绍下前三块内容,后面二块可以自己去了解下。
1、接口信息:包含接口地址,接口参数,请求方式,接口返回类型案例。
2、错误代码:这个里面是你调用这个接口返回的错误代码,可以根据错误代码做异常处理。
3、示例代码:(java)
这里将上图的官方给的Demo复制出来,如下图案例,这里面使用的方法很多都划线了,java不推荐使用了,说不定哪天就下架了!
优化后的方法:
import org.apache.commons.httpclient.HttpStatus;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import java.io.UnsupportedEncodingException;
/**
* @PACKAGE_NAME: com.eascs.scm.cms.controller
* @NAME: Demo
* @USER: MrWang
* @DATE: 2022/3/28
**/
public class Demo {
/**
* 主函数
* @param args
*/
public static void main(String[] args) throws UnsupportedEncodingException {
// token可以从 数据中心 -> 我的接口 中获取
String token = "您的token";
String url = "http://open.api.tianyancha.com/****/***/**/****/normal?keyword=中航重机股份有限公司";
System.out.println(getMessageByUrlToken(url, token));
}
/**
* @param path 对⽅或第三⽅提供的路径
* @return
*/
public static String getMessageByUrlToken(String url,String token){
String result="";
try {
// 根据地址获取请求
HttpGet request = new HttpGet(url);//这⾥发送get请求
// 设置请求头信息
request.setHeader("Authorization", token);//这里我定义的token定义的全局变量
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;
}
}
成功案例:
@Data
public class SkyeyeVo implements Serializable {
@ApiModelProperty(value = "搜索关键字(公司名称、公司id、注册号或社会统一信用代码)")
private String keyWork;
@ApiModelProperty(value = "每页条数(默认20条,最大20条)")
private Integer pageSize;
@ApiModelProperty(value = "当前页数(默认第1页)")
private Integer pageNum;
@ApiModelProperty(value = "年份(默认所有年份)")
private String year;
}
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.eascs.scm.cms.model.vo.SkyeyeVo;
import io.specialrooter.message.MessageResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.web.bind.annotation.*;
/**
* @PACKAGE_NAME: com.eascs.scm.cms.controller
* @NAME: SkyeyeController
* @USER: MrWang
* @DATE: 2022/3/25
**/
@Api(tags = "天眼查接口提供")
@RestController
@Slf4j
@RequestMapping("/cms/skyeye")
public class SkyeyeController {
//天眼查访问token
private static final String token = "保密";
//(天眼查)企业基本信息查询
private static final String CORPORATE_URL = "保密?keyword=";
//(天眼查)企业股东查询
private static final String SHAREHOLDER_URL = "保密?keyword=";
//(天眼查)供应商查询
private static final String SUPPLIER_URL = "保密?keyword=";
//(天眼查)客户查询
private static final String CLIENT_URL = "保密?keyword=";
@ApiOperation(value = "天眼查,企业基本信息查询")
@PostMapping("/getSkyeyeCorporateInformation")
public MessageResponse<Object> getSkyeyeCorporateInformation(@RequestBody SkyeyeVo skyeyeVo){
log.info("##天眼查,查询企业信息参数={}",JSON.toJSONString(skyeyeVo));
String messageByUrlToken = getMessageByUrlToken(this.getUrl(CORPORATE_URL,skyeyeVo));
JSONObject jsonObject = JSONObject.parseObject(messageByUrlToken);
log.info("##天眼查,查询企业信息返回参数={}", JSON.toJSONString(jsonObject));
return MessageResponse.success(jsonObject);
}
@ApiOperation(value = "天眼查,企业股东查询")
@PostMapping("/getShareholderInfo")
public MessageResponse<Object> getShareholderInfo(@RequestBody SkyeyeVo skyeyeVo){
log.info("##天眼查,企业股东查询={}",JSON.toJSONString(skyeyeVo));
String messageByUrlToken = getMessageByUrlToken(this.getUrl(SHAREHOLDER_URL,skyeyeVo));
JSONObject jsonObject = JSONObject.parseObject(messageByUrlToken);
log.info("##天眼查,企业股东查询返回参数={}", JSON.toJSONString(jsonObject));
return MessageResponse.success(jsonObject);
}
@ApiOperation(value = "天眼查,供应商查询")
@PostMapping("/getSupplierInfo")
public MessageResponse<Object> getSupplierInfo(@RequestBody SkyeyeVo skyeyeVo){
log.info("##天眼查,供应商查询={}",JSON.toJSONString(skyeyeVo));
String messageByUrlToken = getMessageByUrlToken(this.getUrl(SUPPLIER_URL,skyeyeVo));
JSONObject jsonObject = JSONObject.parseObject(messageByUrlToken);
log.info("##天眼查,供应商查询返回参数={}", JSON.toJSONString(jsonObject));
return MessageResponse.success(jsonObject);
}
@ApiOperation(value = "天眼查,客户查询")
@PostMapping("/getClientInfo")
public MessageResponse<Object> getClientInfo(@RequestBody SkyeyeVo skyeyeVo){
log.info("##天眼查,客户查询={}",JSON.toJSONString(skyeyeVo));
String messageByUrlToken = getMessageByUrlToken(this.getUrl(CLIENT_URL,skyeyeVo));
JSONObject jsonObject = JSONObject.parseObject(messageByUrlToken);
log.info("##天眼查,客户查询返回参数={}", JSON.toJSONString(jsonObject));
return MessageResponse.success(jsonObject);
}
/**
* 拼接URL,注意前面定义的url后面拼接的参数,因为每个接口的参数都是不同的但是企业的标准是相同的(keyWork)
* @param url
* @param skyeyeVo
* @return
*/
public String getUrl(String url,SkyeyeVo skyeyeVo){
if(ObjectUtils.isNotEmpty(skyeyeVo.getKeyWork())){
url += skyeyeVo.getKeyWork();
}
if(ObjectUtils.isNotEmpty(skyeyeVo.getPageSize())){
url += "&pageSize=" + skyeyeVo.getPageSize();
}
if(ObjectUtils.isNotEmpty(skyeyeVo.getPageNum())){
url += "&pageNum=" + skyeyeVo.getPageNum();
}
if(ObjectUtils.isNotEmpty(skyeyeVo.getYear())){
url += "&year=" + skyeyeVo.getYear();
}
return url;
}
/**
* @param path 对⽅或第三⽅提供的路径
* @return
*/
public String getMessageByUrlToken(String path){
String result="";
try {
// 根据地址获取请求
HttpGet request = new HttpGet(path);//这⾥发送get请求
// 获取当前客户端对象
request.setHeader("Authorization", token);
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;
}
}
这里调用企业基本信息接口执行结果:
到这里基本这个接口已经OK了!哪里有不好的欢迎补充谢谢。