调用企查查上的接口,实现通过公司名称查询公司列表
引入架包
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.29</version></dependency><dependency><groupId>com.vaadin.external.google</groupId><artifactId>android-json</artifactId><version>0.0.20131108.vaadin1</version><scope>compile</scope></dependency>
官方文件一:mainApp
package com.bc.user.manager;import static java.lang.System.out;import java.io.IOException;
import java.util.regex.Pattern;import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.client.methods.HttpHead;
import org.json.JSONException;
import org.json.JSONObject;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;/*** @program: wd-saas* @description: 第三方企查查调用接口类* @author: dd* @create: 2019年9月26日12:11:18**/public class mainApp{// 请登录http://yjapi.com/DataCenter/MyData// 查看我的秘钥 我的Keyprivate static final String appkey = "*企查查上的key";private static final String seckey = "*企查查上的seckey";public static String searchEnterpriseName(String enterpriseName) throws Exception {String reqInterNme = "http://api.qichacha.com/ECIV4/Search";String paramStr = "keyword=" + enterpriseName;String status = "";// auth header settingHttpHead reqHeader = new HttpHead();String[] autherHeader = RandomAuthentHeader();reqHeader.setHeader("Token", autherHeader[0]);reqHeader.setHeader("Timespan", autherHeader[1]);final String reqUri = reqInterNme.concat("?key=").concat(appkey).concat("&").concat(paramStr);String tokenJson = HttpHelper.httpGet(reqUri, reqHeader.getAllHeaders());out.println(String.format("==========================>this is response:{%s}", tokenJson));// parse status from jsonstatus = FormartJson(tokenJson, "Status");out.println(String.format("==========================>Status:{%s}", status));if (!HttpCodeRegex.isAbnornalRequest(status)) {PrettyPrintJson(tokenJson);}return tokenJson;}// 获取返回码 Res Codepublic static class HttpCodeRegex {private static final String ABNORMAL_REGIX = "(101)|(102)";private static final Pattern pattern = Pattern.compile(ABNORMAL_REGIX);protected static boolean isAbnornalRequest(final String status) {return pattern.matcher(status).matches();}}// 获取Auth Codepublic static final String[] RandomAuthentHeader() {String timeSpan = String.valueOf(System.currentTimeMillis() / 1000);String[] authentHeaders = new String[]{DigestUtils.md5Hex(appkey.concat(timeSpan).concat(seckey)).toUpperCase(), timeSpan};return authentHeaders;}// 解析JSONpublic static String FormartJson(String jsonString, String key) throws JSONException {JSONObject jObject = new JSONObject(jsonString);return (String) jObject.get(key);}// pretty print 返回值public static void PrettyPrintJson(String jsonString) throws JSONException {try {ObjectMapper mapper = new ObjectMapper();Object obj = mapper.readValue(jsonString, Object.class);String indented = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);out.println(indented);} catch (JsonProcessingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
其中 HttpHelper.httpGet方法是HttpHelper类里的方法
HttpHelper方法:
package com.bc.user.manager;import static java.lang.System.out;import java.io.IOException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
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.methods.HttpUriRequest;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;/*** 描述 http请求处理模块<br>** @author szld<br>* @version 1.0 <br>* 日期:2019年7月31日 下午2:23:41*/
public class HttpHelper {// get 请求public static String httpGet(String url, Header[] headers) throws Exception {HttpUriRequest uriRequest = new HttpGet(url);if (null != headers) {uriRequest.setHeaders(headers);}CloseableHttpClient httpClient = null;try {httpClient = declareHttpClientSSL(url);CloseableHttpResponse httpresponse = httpClient.execute(uriRequest);HttpEntity httpEntity = httpresponse.getEntity();String result = EntityUtils.toString(httpEntity, REQ_ENCODEING_UTF8);return result;} catch (ClientProtocolException e) {out.println(String.format("http请求失败,uri{%s},exception{%s}", new Object[]{url, e}));} catch (IOException e) {out.println(String.format("IO Exception,uri{%s},exception{%s}", new Object[]{url, e}));} finally {if (null != httpClient) {httpClient.close();}}return null;}// post 请求public static String httpPost(String url, String params) throws Exception {HttpPost post = new HttpPost(url);post.addHeader("Content-Type", "application/json;charset=" + REQ_ENCODEING_UTF8);// 设置传输编码格式StringEntity stringEntity = new StringEntity(params, REQ_ENCODEING_UTF8);stringEntity.setContentEncoding(REQ_ENCODEING_UTF8);post.setEntity(stringEntity);HttpResponse httpresponse = null;CloseableHttpClient httpClient = null;try {httpClient = declareHttpClientSSL(url);httpresponse = httpClient.execute(post);HttpEntity httpEntity = httpresponse.getEntity();String result = EntityUtils.toString(httpEntity, REQ_ENCODEING_UTF8);return result;} catch (ClientProtocolException e) {out.println(String.format("http请求失败,uri{%s},exception{%s}", new Object[]{url, e}));} catch (IOException e) {out.println(String.format("IO Exception,uri{%s},exception{%s}", new Object[]{url, e}));} finally {if (null != httpClient) {httpClient.close();}}return null;}private static CloseableHttpClient declareHttpClientSSL(String url) {if (url.startsWith("https://")) {return sslClient();} else {return HttpClientBuilder.create().setConnectionManager(httpClientConnectionManager).build();}}/*** 设置SSL请求处理** @param*/private static CloseableHttpClient sslClient() {try {SSLContext ctx = SSLContext.getInstance("TLS");X509TrustManager tm = new X509TrustManager() {@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}@Overridepublic void checkClientTrusted(X509Certificate[] xcs, String str) {}@Overridepublic void checkServerTrusted(X509Certificate[] xcs, String str) {}};ctx.init(null, new TrustManager[]{tm}, null);SSLConnectionSocketFactory sslConnectionSocketFactory = SSLConnectionSocketFactory.getSocketFactory();return HttpClients.custom().setSSLSocketFactory(sslConnectionSocketFactory).build();} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);} catch (KeyManagementException e) {throw new RuntimeException(e);}}// this is configprivate static final String REQ_ENCODEING_UTF8 = "utf-8";private static PoolingHttpClientConnectionManager httpClientConnectionManager;public HttpHelper() {httpClientConnectionManager = new PoolingHttpClientConnectionManager();httpClientConnectionManager.setMaxTotal(100);httpClientConnectionManager.setDefaultMaxPerRoute(20);}// get 请求public static String httpGet(String url) throws Exception {return httpGet(url, null);}
}
如果出先第一行编码错误,
就把此处变
此处的编码格式改为GDK,在改回去,就ok了
调用该方法
String nameJson = mainApp.searchEnterpriseName(name);
将查找的json转化为list
Object enterpriseAppSearch = JSONObject.parseObject(nameJson, Object.class);
调用企查查上的接口,实现通过公司名称查询公司列表相关推荐
- 编写Python脚本调用企查查股东信息接口将数据导出为excel文件
此文章已同步更新至我的个人博客https://simonting.gitee.io 前言 调用企查查的API获取一万多家公司股东信息数据导出为excel文件. 1.设置IP白名单 IP获取建议使用百度 ...
- python 调用企查查接口平台
一.需求: 通过内部系统导出企业信息数据后,筛选状态为"正常"的企业数据.然后拿筛选后的企业去查询该企业的工商数据. 开始是在国家企业信息公示系统中查询,由于查询数据量过大,后改用 ...
- Golang 调用http 文件上传接口 进行上传文件
远程服务器有一个文件上传接口,文件用于保存到服务器本地,用go如何调用此接口将文件上传至服务器? 首先,文件上传请求方 与 接收方 要协调工作(解析等工作) 接收方: func UploadFileT ...
- 企查查在哪查实缴_如何查询一家企业的注册资金是实缴的还是认缴的?
展开全部 操作2113如下: 1.百度搜索"国家企业信用5261信息4102公示系统",点击官网 2.输入1653企业名称.统一社版会信用权代码或注册号,点击查询 3.点击查询结果 ...
- 调用企查查第三方Api:企业工商模糊搜索
1.首先需要设置token,API中要求token的格式为key+Timespan+SecretKey组成的32位md5加密的大写字符串,可以调用hutool里的SecureUtil工具类,但是生成的 ...
- java 调用企查查API查询企业信息
效果图: 首先需要设置token,API中要求token的格式为key+Timespan+SecretKey组成的32位md5加密的大写字符串,所以我也附赠了MD5加密的工具类.token要放在htt ...
- 使用python程序抓取天眼查,企查查和爱企查上的企业基本信息
本文说明使用python程序自动抓取天眼查或者企查查上的企业基本信息.本文中的程序仅供学习参考,请通过正规渠道获取相应的数据资产. 工程目录如下: w3目录下内容为: 工程中的部分源码如下. 文件pa ...
- 读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储
2019独角兽企业重金招聘Python工程师标准>>> 今天这个小爬虫是应朋友,帮忙写的一个简单的爬虫,目的是爬取企查查这个网站的企业信息. 编程最终要的就是搭建编程环境,这里我们的 ...
- python 爬取企业注册信息_读书笔记(十)——python简单爬取企查查网企业信息,并以excel格式存储...
今天这个小爬虫是应朋友,帮忙写的一个简单的爬虫,目的是爬取企查查这个网站的企业信息. 编程最终要的就是搭建编程环境,这里我们的编程环境是: python3.6 BeautifulSoup模块 lxml ...
最新文章
- POJ3114强连通+spfa
- 2.1Python基础语法(一)之注释与数据类型:
- 8天学通MongoDB——第五天 主从复制
- DOM-14 【实战】解决事件代理和鼠标移动事件的窘态
- oracle之单行函数之子查询之课后练习
- REST framework 权限管理源码分析
- Linux通过SSH实现免密登录
- .NET中的异步编程(一)-为什么需要异步
- 平台卖家要不要做独立站?
- linux连接苹果鼠标,Linux 5.13添加对苹果Magic Mouse 2和微软SAM的支持
- 阿里电话面试经过与总结
- html如何将汉字转换成英文,中文字体转化为英文或转码
- c语言计算个人所得税作业,C语言用文件计算个人所得税
- Springboot 使用 Guava 的重试Retry ,轻便灵活
- 计算机抠图知识,计算机PS抠图方法.doc
- NEFU 大一寒假培训【一】二维数组、结构体
- CentOS 8安装 GVM20.08
- CA认证原理以及实现(上)
- TTL的含义是什么?
- Linux使用非root用户在根目录中创建文件夹
热门文章
- 【零基础绘画教程】procreate超详细用法讲解 视频入门教程全
- MenuetOS, FreeDOS 有了新的发行
- 光猫及二级路由器Openwrt均开启IPv6,满足双层网络内IPv6的获取
- VMware虚拟机 之 NAT模式详解
- 【图解相对论系列1】怎样直观地理解张量(Tensor)?爱因斯坦广义相对论的数学基础...
- Using QByteRef with an index pointing outside the valid range of a QByteArray
- ExoPlayer播放器剖析(一)进入ExoPlayer的世界
- 关于java中method.invoked 传入类型不一样的问题
- 银行卡识别技术-移动支付新宠儿
- android mvp mvvm ppt,Android中MVC MVP MVVM模式