Java 查询企业基本信息接口实现(企查查)

痛定思痛。 2023-06-26 08:25 56阅读 0赞

因项目需要,系统中需要添加根据企业名称或统一信用代码查询企业信息的功能,所以整合了企查查的查询接口

接口文档地址

Java请求示例:

  1. /** * 版权申明: 苏州朗动科技有限公司<br> * 项目描述: 企查查-接口平台<br> * 该接口调用demo仅供学习参考 */
  2. package org.ld.httpGetDemo;
  3. import static java.lang.System.out;
  4. import java.io.IOException;
  5. import java.util.regex.Pattern;
  6. import org.apache.commons.codec.digest.DigestUtils;
  7. import org.apache.http.client.methods.HttpHead;
  8. import org.json.JSONException;
  9. import org.json.JSONObject;
  10. import com.fasterxml.jackson.core.JsonProcessingException;
  11. import com.fasterxml.jackson.databind.ObjectMapper;
  12. /** * * 描述 http请求处理模块<br> * * @author szld<br> * @version 1.0 <br> * 日期:2019年7月31日 下午2:23:41 */
  13. public class MainApp {
  14. // 请登录http://yjapi.com/DataCenter/MyData
  15. // 查看我的秘钥 我的Key
  16. private static final String appkey = "我的接口:我的Key";
  17. private static final String seckey = "我的接口:我的秘钥";
  18. public static void main(String[] args) {
  19. String reqInterNme = "http://api.qichacha.com/ECIV4/Search";
  20. String paramStr = "keyword=新疆庆华能源集团有限公司";
  21. String status = "";
  22. try {
  23. // auth header setting
  24. HttpHead reqHeader = new HttpHead();
  25. String[] autherHeader = RandomAuthentHeader();
  26. reqHeader.setHeader("Token", autherHeader[0]);
  27. reqHeader.setHeader("Timespan", autherHeader[1]);
  28. final String reqUri = reqInterNme.concat("?key=").concat(appkey).concat("&").concat(paramStr);
  29. String tokenJson = HttpHelper.httpGet(reqUri, reqHeader.getAllHeaders());
  30. out.println(String.format("==========================>this is response:{%s}", tokenJson));
  31. // parse status from json
  32. status = FormartJson(tokenJson, "Status");
  33. out.println(String.format("==========================>Status:{%s}", status));
  34. if (!HttpCodeRegex.isAbnornalRequest(status)) {
  35. PrettyPrintJson(tokenJson);
  36. }
  37. } catch (Exception e1) {
  38. e1.printStackTrace();
  39. }
  40. }
  41. // 获取返回码 Res Code
  42. static class HttpCodeRegex {
  43. private static final String ABNORMAL_REGIX = "(101)|(102)";
  44. private static final Pattern pattern = Pattern.compile(ABNORMAL_REGIX);
  45. protected static boolean isAbnornalRequest(final String status) {
  46. return pattern.matcher(status).matches();
  47. }
  48. }
  49. // 获取Auth Code
  50. protected static final String[] RandomAuthentHeader() {
  51. String timeSpan = String.valueOf(System.currentTimeMillis() / 1000);
  52. String[] authentHeaders = new String[] { DigestUtils.md5Hex(appkey.concat(timeSpan).concat(seckey)).toUpperCase(), timeSpan };
  53. return authentHeaders;
  54. }
  55. // 解析JSON
  56. protected static String FormartJson(String jsonString, String key) throws JSONException {
  57. JSONObject jObject = new JSONObject(jsonString);
  58. return (String) jObject.get(key);
  59. }
  60. // pretty print 返回值
  61. protected static void PrettyPrintJson(String jsonString) throws JSONException {
  62. try {
  63. ObjectMapper mapper = new ObjectMapper();
  64. Object obj = mapper.readValue(jsonString, Object.class);
  65. String indented = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
  66. out.println(indented);
  67. } catch (JsonProcessingException e) {
  68. e.printStackTrace();
  69. } catch (IOException e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. }

我将代码稍微改造了一下,仅供参考,如有错误,劳您指出:

  1. @Value("${qichacha.key}")
  2. private String key;
  3. @Value("${qichacha.secret}")
  4. private String secret;
  5. //搜索关键字(公司名、注册号、社会统一信用代码或KeyNo)注:社会组织、香港企业仅支持通过企业名称和KeyNo查询
  6. @Log("企业信息列表")
  7. @ApiOperation(value = "企业信息列表")
  8. @GetMapping(value = "list.do" , produces = "application/json;charset=UTF-8")
  9. public R pageList(@RequestParam(value = "keyword")String keyword ,HttpServletRequest request) {
  10. List<EnterpriseInfoDO> resultList = new ArrayList<>();
  11. String reqInterNme = "http://api.qichacha.com/ECIV4/Search";
  12. String paramStr = "keyword="+keyword;
  13. try {
  14. // auth header setting
  15. HttpHead reqHeader = new HttpHead();
  16. String[] autherHeader = QiChaChaUtil.RandomAuthentHeader(key,secret);
  17. reqHeader.setHeader("Token", autherHeader[0]);
  18. reqHeader.setHeader("Timespan", autherHeader[1]);
  19. final String reqUri = reqInterNme.concat("?key=").concat(key).concat("&").concat(paramStr).concat("&pageSize=20");
  20. String tokenJson = HttpHelper.httpGet(reqUri, reqHeader.getAllHeaders());
  21. JSONObject jsonObject = JSON.parseObject(tokenJson);
  22. return R.ok().put("result",resultList);
  23. } catch (Exception e1) {
  24. e1.printStackTrace();
  25. return R.error("查询企业信息失败");
  26. }
  27. }
  28. }

企查查工具类

  1. import static java.lang.System.out;
  2. import java.io.IOException;
  3. import java.util.regex.Pattern;
  4. import org.apache.commons.codec.digest.DigestUtils;
  5. import org.json.JSONException;
  6. import org.json.JSONObject;
  7. import com.fasterxml.jackson.core.JsonProcessingException;
  8. import com.fasterxml.jackson.databind.ObjectMapper;
  9. public class QiChaChaUtil {
  10. // 获取返回码 Res Code
  11. public static class HttpCodeRegex {
  12. private static final String ABNORMAL_REGIX = "(101)|(102)";
  13. private static final Pattern pattern = Pattern.compile(ABNORMAL_REGIX);
  14. protected static boolean isAbnornalRequest(final String status) {
  15. return pattern.matcher(status).matches();
  16. }
  17. }
  18. // 获取Auth Code
  19. public static final String[] RandomAuthentHeader(String appkey,String seckey) {
  20. String timeSpan = String.valueOf(System.currentTimeMillis() / 1000);
  21. String[] authentHeaders = new String[] { DigestUtils.md5Hex(appkey.concat(timeSpan).concat(seckey)).toUpperCase(), timeSpan };
  22. return authentHeaders;
  23. }
  24. // 解析JSON
  25. public static String FormartJson(String jsonString, String key) throws JSONException {
  26. JSONObject jObject = new JSONObject(jsonString);
  27. return (String) jObject.get(key);
  28. }
  29. // pretty print 返回值
  30. public static void PrettyPrintJson(String jsonString) throws JSONException {
  31. try {
  32. ObjectMapper mapper = new ObjectMapper();
  33. Object obj = mapper.readValue(jsonString, Object.class);
  34. String indented = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
  35. out.println(indented);
  36. } catch (JsonProcessingException e) {
  37. e.printStackTrace();
  38. } catch (IOException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. }

application.yml
在这里插入图片描述
key和密钥登录企查查
在这里插入图片描述

建议把查询出的数据持久化到数据库,如有相同查询 直接从数据库返回数据。

发表评论

表情:
评论列表 (有 0 条评论,56人围观)

还没有评论,来说两句吧...

相关阅读