效果图:

首先需要设置token,API中要求token的格式为key+Timespan+SecretKey组成的32位md5加密的大写字符串,所以我也附赠了MD5加密的工具类。token要放在http的header 头中,所以我在get请求的工具类中增加了一个header。

//添加header 头httpGet.setHeader("Token",token);httpGet.setHeader("Timespan",timeSpan);

权限验证所提到的key,SecretKey均可在“我的接口”中查询到

下面附上代码。

HttpClientUtil :HTTP请求的工具类。里面封装好了,get、post 有无参数的请求情况。

package dlighttop.apitest.apitest;import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;import org.apache.http.Header;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;public class HttpClientUtil {/*** 带参数的get请求* @param url* @param param* @return String*/public static String doGet(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}/*** 带参数的get请求* @param url* @param param* @return String*/public static String doGet(String url,String token,String timeSpan,Object o) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);//添加header 头httpGet.setHeader("Token",token);httpGet.setHeader("Timespan",timeSpan);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}//
//    /**
//     * 不带参数的get请求
//     * @param url
//     * @return String
//     */
//    public static String doGet(String url) {
//        return doGet(url, null);
//    }/*** 不带参数的get请求** @param s* @param url* @return String*/public static String doGet(String url, String token, String timeSpan) {return doGet(url, token,timeSpan,null);}/*** 带参数的post请求* @param url* @param param* @return String*/public static String doPost(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建参数列表if (param != null) {List<NameValuePair> paramList = new ArrayList<>();for (String key : param.keySet()) {paramList.add(new BasicNameValuePair(key, param.get(key)));}// 模拟表单UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);httpPost.setEntity(entity);}// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}/*** 不带参数的post请求* @param url* @return String*/public static String doPost(String url) {return doPost(url, null);}/*** 传送json类型的post请求* @param url* @param json* @return String*/public static String doPostJson(String url, String json) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建请求内容StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);httpPost.setEntity(entity);// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}
}

MD5Util:MD5加密的工具类。网上找的。生成32位大写MD5码

package dlighttop.apitest.apitest;import java.security.MessageDigest;/*** <p>* Description:* </p>* <p>* Copyright: Copyright (c)2015* </p>* <p>* Company: tope* </p>* <P>* Created Date :2015-7-27* </P>* * @author zhangfeng* @version 1.0*/
public class MD5Util {public final static String MD5(String s) {char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };try {byte[] btInput = s.getBytes();// 获得MD5摘要算法的 MessageDigest 对象MessageDigest mdInst = MessageDigest.getInstance("MD5");// 使用指定的字节更新摘要mdInst.update(btInput);// 获得密文byte[] md = mdInst.digest();// 把密文转换成十六进制的字符串形式int j = md.length;char str[] = new char[j * 2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 = md[i];str[k++] = hexDigits[byte0 >>> 4 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}return new String(str);} catch (Exception e) {e.printStackTrace();return null;}}public static void main(String[] args) {System.out.println(MD5("123456").toUpperCase());}
}

程序的入口,这里因为时间比较紧,所以写的比较乱。。。

package dlighttop.apitest.apitest;import dlighttop.core.utils.MD5Util;
import java.util.Date;public class identityCheck {public static boolean identityCheck(String token,String timeStamp){System.out.println("-----------------开始调用--------------->");System.out.println("token"+token);String key = "263d5d33**b54b2da7d7a2742fc17828";String keyword = "阿里巴巴";//企业关键字模糊查询String url = "http://api.qichacha.com/ECIV4/Search?key=" + key + "&dtype=json" + "&keyword=" + keyword;//企业关键字获取详细信息
//        String url = "http://api.qichacha.com/ECIV4/GetBasicDetailsByName?key=" + key + "&dtype=json" + "&keyword=" + keyword;System.out.println("请求url:" + url);boolean match = false; //是否匹配try {String result = HttpClientUtil.doGet(url,token,timeStamp);System.out.println("请求结果:" + result);} catch (Exception e) {e.printStackTrace();}System.out.println("<-----------------调用结束---------------");return match;}public static void main(String[] args) throws Exception{String key = "263d5d338cb54b2d**d7a2742fc17828";int secondTimestamp = getSecondTimestamp(new Date()); //精确到秒的时间戳String secretKey ="B24B271A56A3**F16B6B73FFF64D80B2"; //密钥String token = MD5Util.MD5(key+secondTimestamp+secretKey); //token:验证加密值(key+Timespan+SecretKey组成的32位md5加密的大写字符串)System.out.println(token);identityCheck(token,secondTimestamp+"");}/*** 获取精确到秒的时间戳* @return*/public static int getSecondTimestamp(Date date){if (null == date) {return 0;}String timestamp = String.valueOf(date.getTime());int length = timestamp.length();if (length > 3) {return Integer.valueOf(timestamp.substring(0,length-3));} else {return 0;}}
}

最后打个写好的包,记录一下,方便自己也方便大家。嘿嘿~

java 调用企查查API查询企业信息相关推荐

  1. Python爬虫获取企查查公开的企业信息

    1.参考博文 https://blog.csdn.net/qq_39295735/article/details/84504848?utm_medium=distribute.pc_relevant. ...

  2. 【mysql数据库】通过python 3.7 爬虫获取企查查公开的企业信息,并记录到数据库

    1.爬虫的思路参考这篇博文 https://mp.csdn.net/postedit/83628587 2.数据库保存截图如下 3.python代码如下 #!/usr/bin/python3 #-*- ...

  3. 编写Python脚本调用企查查股东信息接口将数据导出为excel文件

    此文章已同步更新至我的个人博客https://simonting.gitee.io 前言 调用企查查的API获取一万多家公司股东信息数据导出为excel文件. 1.设置IP白名单 IP获取建议使用百度 ...

  4. [630]企查查api接口操作

    企查查api接口中心:http://openapi.qichacha.com/DataCenter 1.了解需求,申请接口. 想要通过企业的统一信用代码或者企业名称查询企业的注册地址,所以申请的企业工 ...

  5. Python3爬取企查查网站的企业年表并存入MySQL

    Python3爬取企查查网站的企业年表并存入MySQL 本篇博客的主要内容:爬取企查查网站的企业年报数据,存到mysql中,为了方便记录,分成两个模块来写: 第一个模块是爬取数据+解析数据,并将数据存 ...

  6. java调用第三方天气预报API接口

    java调用第三方天气预报API接口 package com.sensordata.controller; import com.common.json.JSONObject; import java ...

  7. java调用个人微信api接口实现收发消息发朋友圈

    个人微信api接口,java调用个人微信api接口实现收发消息发朋友圈 1.微信好友收发消息         /**      * 给微信好友发消息      * @author wechatno:t ...

  8. 12.通过微信小程序端访问企查查(采集工商信息)

    12.通过微信小程序端访问企查查(采集工商信息) 需要注意的问题: 一.1.微信端访问企查查小程序需要登录.2.访问抓包获取的url是有时效性的过一段时间就不能用了. http://xcx.qicha ...

  9. Java调用高德地图API根据详细地址获取经纬度

    Java调用高德地图API根据详细地址获取经纬度 官方API:https://lbs.amap.com/api/webservice/guide/api/georegeo * Web服务API 地理/ ...

最新文章

  1. DOCKER OVERLAY NETWORK consul 注册
  2. 获取请求url的查询字符串
  3. 一直想测试的NGINX变量输出,最于有办法了。
  4. smarty访问数组中的数据,如果是关联数组直接用点.
  5. 王元院士漫谈哥德巴赫猜想
  6. c++用一级运算比较大小_孩子数学运算难?小学数学速算技巧顺口溜都在这里了!...
  7. 递归-Hanoi塔问题
  8. flowable 监听器中无法获取 oauth 上下文对象
  9. java queue代码_java代码实现顺序队列
  10. h5快速制作工具-企业级. 非个人无水印
  11. 如何安装biopython_Biopython - 安装
  12. java excel 分页显示_分页显示Excel数据
  13. 错误记录-java idea执行k8s https api报错 should not be presented in certificate_request
  14. 基于android的个人健康身体检测测试软件app
  15. cogs 944. [東方S3] 藤原妹红
  16. ffmpeg命令行录制一个具有非IDR性质的I帧的视频
  17. TypeScript 2
  18. STM32之HAL库详解 及 手动移植
  19. Python wind导入数据问题总结
  20. 在pycharm中使用pyqt5

热门文章

  1. Surface Pro 6 黑苹果 CLOVER 配置文件,全球首发(转载)
  2. QNap Container Station 配置docker源 安装docker镜像
  3. cheng@ARM结构与编程之day3-MOV LSL
  4. Java实现 kiosk模式,適用於Linux Java Swing應用程序的Kiosk模式
  5. matsuri.icu 筛选单场直播中 指定用户的弹幕
  6. Ubuntu 20.04双拼输入法
  7. Bable的快速入门
  8. 银盒子受邀出席银联云闪付大会,获“最佳行业合作”奖
  9. Ios android crash report,iOS App 后台 Crash 调查
  10. github加速插件(google浏览器)