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 {//天眼查访问tokenprivate 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了!哪里有不好的欢迎补充谢谢。