java 调用企查查API查询企业信息
效果图:
首先需要设置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查询企业信息相关推荐
- Python爬虫获取企查查公开的企业信息
1.参考博文 https://blog.csdn.net/qq_39295735/article/details/84504848?utm_medium=distribute.pc_relevant. ...
- 【mysql数据库】通过python 3.7 爬虫获取企查查公开的企业信息,并记录到数据库
1.爬虫的思路参考这篇博文 https://mp.csdn.net/postedit/83628587 2.数据库保存截图如下 3.python代码如下 #!/usr/bin/python3 #-*- ...
- 编写Python脚本调用企查查股东信息接口将数据导出为excel文件
此文章已同步更新至我的个人博客https://simonting.gitee.io 前言 调用企查查的API获取一万多家公司股东信息数据导出为excel文件. 1.设置IP白名单 IP获取建议使用百度 ...
- [630]企查查api接口操作
企查查api接口中心:http://openapi.qichacha.com/DataCenter 1.了解需求,申请接口. 想要通过企业的统一信用代码或者企业名称查询企业的注册地址,所以申请的企业工 ...
- Python3爬取企查查网站的企业年表并存入MySQL
Python3爬取企查查网站的企业年表并存入MySQL 本篇博客的主要内容:爬取企查查网站的企业年报数据,存到mysql中,为了方便记录,分成两个模块来写: 第一个模块是爬取数据+解析数据,并将数据存 ...
- java调用第三方天气预报API接口
java调用第三方天气预报API接口 package com.sensordata.controller; import com.common.json.JSONObject; import java ...
- java调用个人微信api接口实现收发消息发朋友圈
个人微信api接口,java调用个人微信api接口实现收发消息发朋友圈 1.微信好友收发消息 /** * 给微信好友发消息 * @author wechatno:t ...
- 12.通过微信小程序端访问企查查(采集工商信息)
12.通过微信小程序端访问企查查(采集工商信息) 需要注意的问题: 一.1.微信端访问企查查小程序需要登录.2.访问抓包获取的url是有时效性的过一段时间就不能用了. http://xcx.qicha ...
- Java调用高德地图API根据详细地址获取经纬度
Java调用高德地图API根据详细地址获取经纬度 官方API:https://lbs.amap.com/api/webservice/guide/api/georegeo * Web服务API 地理/ ...
最新文章
- DOCKER OVERLAY NETWORK consul 注册
- 获取请求url的查询字符串
- 一直想测试的NGINX变量输出,最于有办法了。
- smarty访问数组中的数据,如果是关联数组直接用点.
- 王元院士漫谈哥德巴赫猜想
- c++用一级运算比较大小_孩子数学运算难?小学数学速算技巧顺口溜都在这里了!...
- 递归-Hanoi塔问题
- flowable 监听器中无法获取 oauth 上下文对象
- java queue代码_java代码实现顺序队列
- h5快速制作工具-企业级. 非个人无水印
- 如何安装biopython_Biopython - 安装
- java excel 分页显示_分页显示Excel数据
- 错误记录-java idea执行k8s https api报错 should not be presented in certificate_request
- 基于android的个人健康身体检测测试软件app
- cogs 944. [東方S3] 藤原妹红
- ffmpeg命令行录制一个具有非IDR性质的I帧的视频
- TypeScript 2
- STM32之HAL库详解 及 手动移植
- Python wind导入数据问题总结
- 在pycharm中使用pyqt5
热门文章
- Surface Pro 6 黑苹果 CLOVER 配置文件,全球首发(转载)
- QNap Container Station 配置docker源 安装docker镜像
- cheng@ARM结构与编程之day3-MOV LSL
- Java实现 kiosk模式,適用於Linux Java Swing應用程序的Kiosk模式
- matsuri.icu 筛选单场直播中 指定用户的弹幕
- Ubuntu 20.04双拼输入法
- Bable的快速入门
- 银盒子受邀出席银联云闪付大会,获“最佳行业合作”奖
- Ios android crash report,iOS App 后台 Crash 调查
- github加速插件(google浏览器)