PatentStarApiService.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684
  1. package cn.cslg.pas.service.outApi;
  2. import cn.cslg.pas.common.model.PatentCell;
  3. import cn.cslg.pas.common.model.dto.GetClaimsInfoParamsDTO;
  4. import cn.cslg.pas.common.model.dto.GetDescriptionInfoParamsDTO;
  5. import cn.cslg.pas.common.model.dto.GetFuTuParamsDTO;
  6. import cn.cslg.pas.common.model.dto.GetSearchBiblioParamsDTO;
  7. import cn.cslg.pas.common.model.outApi.PatentStarListDto;
  8. import cn.cslg.pas.common.model.vo.outApi.StarPatentVO;
  9. import cn.cslg.pas.common.utils.FormatUtil;
  10. import cn.cslg.pas.common.utils.JsonUtils;
  11. import cn.cslg.pas.common.utils.SecurityUtils.SecurityUtils;
  12. import cn.cslg.pas.domain.*;
  13. import cn.hutool.crypto.SecureUtil;
  14. import com.alibaba.fastjson.JSON;
  15. import com.alibaba.fastjson.JSONArray;
  16. import com.alibaba.fastjson.JSONObject;
  17. import com.google.gson.Gson;
  18. import com.google.gson.JsonObject;
  19. import lombok.RequiredArgsConstructor;
  20. import lombok.extern.slf4j.Slf4j;
  21. import okhttp3.*;
  22. import org.apache.commons.lang3.StringEscapeUtils;
  23. import org.junit.Test;
  24. import org.springframework.beans.factory.annotation.Value;
  25. import org.springframework.stereotype.Service;
  26. import java.io.IOException;
  27. import java.util.*;
  28. import java.util.concurrent.TimeUnit;
  29. import java.util.regex.Matcher;
  30. import java.util.regex.Pattern;
  31. /**
  32. * 调用外部接口的Service类 PCS:权限系统
  33. *
  34. * @Author chenyu
  35. * @Date 2023/4/25
  36. */
  37. @RequiredArgsConstructor
  38. @Slf4j
  39. @Service
  40. public class PatentStarApiService {
  41. public static String formatValue(String value){
  42. return value.replace("~",">");
  43. }
  44. public static String formQuery(String query){
  45. query = query
  46. .replace(" AND ", "*")
  47. .replace(" OR ", "+")
  48. .replace(" NOT ", "-");
  49. //记录偏移量
  50. int t =0;
  51. StringBuilder query2 =new StringBuilder(query);
  52. //匹配形如ab=(cd OR ef);
  53. String regexOrg = "([^=^\\+^\\(^\\)]+=\\([^=^\\)]+\\))+?";
  54. Pattern patternOrg = Pattern.compile(regexOrg);
  55. Matcher matcherOrg = patternOrg.matcher(query);
  56. while (matcherOrg.find()){
  57. String a = matcherOrg.group();
  58. String[] bc =a.split("=");
  59. String b =bc[0];
  60. b.length();
  61. query2.delete(matcherOrg.start()+t,matcherOrg.start()+b.length()+1+t);
  62. t=t-b.length()-1;
  63. String c= bc[1];
  64. String regexOrg1 = "([^\\+^\\*^\\-^\\(^\\)])+";
  65. Pattern patternOrg1 = Pattern.compile(regexOrg1);
  66. Matcher matcherOrg1 = patternOrg1.matcher(c);
  67. while (matcherOrg1.find()){
  68. String r =matcherOrg1.group();
  69. System.out.println(r);
  70. query2.insert(matcherOrg.start()+b.length()+1+matcherOrg1.start()+t,b+"=");
  71. t=t+b.length()+1;
  72. }
  73. }
  74. System.out.println(query2);
  75. return query2.toString();
  76. }
  77. public static String formatQuery(String query) {
  78. query= PatentStarApiService.formQuery(query);
  79. StringBuilder sb = new StringBuilder(query);
  80. String regex = "(?<=[\\(\\)\\+\\-=\\*])[^\\*^\\-^\\+^\\(^\\)]+?(?=[\\(\\+\\-=\\)\\*])";
  81. Pattern pattern = Pattern.compile(regex);
  82. Matcher matcher = pattern.matcher(query);
  83. Map<Integer, Integer> map = new LinkedHashMap<>();
  84. while (matcher.find()) {
  85. String a = matcher.group();
  86. String regex2 = "[^\\(^\\)^\\+^-^=^*]";
  87. Pattern pattern2 = Pattern.compile(regex2);
  88. Matcher matcher2 = pattern2.matcher(a);
  89. Integer start = matcher.start();
  90. if (matcher2.find()) {
  91. start += matcher2.start();
  92. }
  93. map.put(start, matcher.end());
  94. }
  95. if (map.size() == 0) {
  96. return "";
  97. }
  98. List<Integer> list = new ArrayList<Integer>(map.keySet());
  99. for (int i = 0; i < list.size(); i += 2) {
  100. int start1 = list.get(i);
  101. int end1 = map.get(list.get(i));
  102. int len1 = end1 - start1;
  103. int start2 = list.get(i + 1);
  104. int end2 = map.get(list.get(i + 1));
  105. int len2 = end2 - start2;
  106. int diff = len2 - len1;
  107. if (diff > 0) {
  108. sb.replace(start1, end1,formatValue(query.substring(start2, end2)));
  109. sb.replace(start2 + diff, end2 + diff, query.substring(start1, end1));
  110. } else {
  111. sb.replace(start2, end2, query.substring(start1, end1));
  112. sb.replace(start1, end1, formatValue(query.substring(start2, end2)));
  113. }
  114. }
  115. String reStr = sb.toString();
  116. reStr = "FXX" + reStr.replace("=", "/");
  117. return reStr;
  118. }
  119. //装载专利信息
  120. public void loadStarPatentVOS(List<StarPatentVO> starPatentVOS){
  121. starPatentVOS.forEach(item->{
  122. if(item.getPublicNo()!=null&&!item.getPublicNo().equals("")){
  123. item.setPatentNo(item.getPublicNo());
  124. }
  125. else if(item.getAnnounceNo()!=null&&!item.getAnnounceNo().equals("")){
  126. item.setPublicNo(item.getAnnounceNo());
  127. item.setPatentNo(item.getAnnounceNo());
  128. }
  129. item.setApplicant(new ArrayList<>());
  130. item.setAgent(new ArrayList<>());
  131. item.setIpcList(Arrays.asList(item.getIpcListStr().split(";")));
  132. List<String> applicants = Arrays.asList( item.getApplicantStr().split(";"));
  133. //装载申请人
  134. applicants.forEach(
  135. tem->{
  136. PatentApplicant patentApplicant =new PatentApplicant();
  137. patentApplicant.setType(2);
  138. patentApplicant.setDataType(2);
  139. patentApplicant.setName(tem);
  140. item.getApplicant().add(patentApplicant);
  141. }
  142. );
  143. if(item.getCurrentApplicantStr()!=null&&item.getCurrentApplicantStr()!=""){
  144. List<String> cApplicants = Arrays.asList(item.getCurrentApplicantStr().split(";"));
  145. cApplicants.forEach(
  146. tem->{
  147. PatentApplicant patentApplicant =new PatentApplicant();
  148. patentApplicant.setType(2);
  149. patentApplicant.setDataType(1);
  150. patentApplicant.setName(tem);
  151. item.getApplicant().add(patentApplicant);
  152. }
  153. );
  154. }
  155. //代理机构
  156. if(item.getAgencyStr()!=null&&item.getAgencyStr()!=""){
  157. PatentAgency patentAgency =new PatentAgency();
  158. patentAgency.setName(item.getAgencyStr().split(" ")[0]);
  159. item.setAgency(patentAgency);
  160. }
  161. //发明人
  162. if(item.getInventorStr()!=null&&item.getInventorStr()!=""){
  163. item.setInventor(new ArrayList<>());
  164. List<String> inventors = Arrays.asList(item.getInventorStr().split(";"));
  165. inventors.forEach(
  166. tem->{
  167. PatentInventor patentInventor =new PatentInventor();
  168. patentInventor.setName(tem);
  169. item.getInventor().add(patentInventor);;
  170. }
  171. );
  172. }
  173. //代理人
  174. if(item.getAgentStr()!=null&&item.getAgentStr()!=""){
  175. List<String> agent = Arrays.asList(item.getAgentStr().split(";"));
  176. agent.forEach(
  177. tem->{
  178. PatentAgent patentAgent =new PatentAgent();
  179. patentAgent.setName(tem);
  180. item.getAgent().add(patentAgent);
  181. }
  182. );
  183. }
  184. //附图
  185. String apN=item.getApplicationNo().replace(".","");
  186. item.setAbstractPath(this.getPictureApi(apN.substring(2)));
  187. if(item.getLG()!=null){
  188. switch (item.getLG()){
  189. case 1:
  190. item.setSimpleStatus("有效");
  191. break;
  192. case 2:
  193. item.setSimpleStatus("失效");
  194. break;
  195. case 3:
  196. item.setSimpleStatus("审中");
  197. break;
  198. }
  199. }
  200. //法律状态
  201. });
  202. }
  203. public Map<String, Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
  204. try {
  205. String formQuery = patentStarListDto.getCurrentQuery();
  206. patentStarListDto.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
  207. }
  208. catch (Exception e){
  209. return null;
  210. }
  211. String json = JSONObject.toJSONString(patentStarListDto);
  212. String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
  213. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  214. String Sign = "FNYJD7902206FFB741E163BE6536C3689D55" + currentTimeMillis.toString();
  215. String signMd5 = FormatUtil.MD5(Sign);
  216. // 创建一个OkHttpClient对象
  217. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  218. .connectTimeout(60, TimeUnit.SECONDS)
  219. .writeTimeout(60, TimeUnit.SECONDS)
  220. .readTimeout(60, TimeUnit.SECONDS)
  221. .build();
  222. // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
  223. FormBody.Builder builder = new FormBody.Builder();
  224. builder.add("AppID", "K8FFB741E163BE6536");
  225. builder.add("Stamp", currentTimeMillis.toString());
  226. builder.add("Sign", signMd5);
  227. builder.add("QueryJson", json);
  228. FormBody requestBody = builder.build();
  229. // 创建一个请求对象
  230. Request request = new Request.Builder().url(url).post(requestBody).build();
  231. // 发送请求获取响应
  232. try {
  233. Response response = okHttpClient.newCall(request).execute();
  234. // 判断请求是否成功
  235. if (response.isSuccessful()) {
  236. JSONObject jsonObject = JSONObject.parseObject(Objects.requireNonNull(response.body()).string());
  237. if(jsonObject.get("Ret").equals(500)){
  238. return null;
  239. }
  240. JSONObject Data = (JSONObject) jsonObject.get("Data");
  241. List<StarPatentVO> starPatentVOS = JSONArray.parseArray(Data.get("List").toString(), StarPatentVO.class);
  242. this.loadStarPatentVOS(starPatentVOS);
  243. // 打印服务端返回结果
  244. // return Objects.requireNonNull(response.body()).string();
  245. Map<String, Object> reMap = new HashMap<>();
  246. reMap.put("size", patentStarListDto.getRowCount());
  247. reMap.put("current", patentStarListDto.getPageNum());
  248. reMap.put("records",starPatentVOS);
  249. reMap.put("total", Data.get("HitCount"));
  250. return reMap;
  251. }
  252. }
  253. catch (IOException e) {
  254. e.printStackTrace();
  255. return null;
  256. }
  257. return null;
  258. }
  259. /**
  260. * @param appNo
  261. * @return
  262. * @throws IOException
  263. * @author 李仁杰
  264. * 从专利之星获取中国专利著录
  265. */
  266. public String getCnBibApi(String appNo) {
  267. String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
  268. String appId = "2000041";
  269. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  270. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  271. String Sign = appId + appkey + currentTimeMillis.toString();
  272. String signMd5 = FormatUtil.MD5(Sign);
  273. // 创建一个OkHttpClient对象
  274. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  275. .connectTimeout(60, TimeUnit.SECONDS)
  276. .writeTimeout(60, TimeUnit.SECONDS)
  277. .readTimeout(60, TimeUnit.SECONDS)
  278. .build();
  279. // 创建一个请求对象
  280. Request request = new Request.Builder().url(url)
  281. .addHeader("_appid", "2000041")
  282. .addHeader("_timestamp", currentTimeMillis.toString())
  283. .addHeader("_sign", signMd5)
  284. .get().build();
  285. // 发送请求获取响应
  286. try {
  287. Response response = okHttpClient.newCall(request).execute();
  288. // 判断请求是否成功
  289. if (response.isSuccessful()) {
  290. response.body().toString();
  291. // 打印服务端返回结果
  292. return Objects.requireNonNull(response.body()).string();
  293. }
  294. } catch (IOException e) {
  295. e.printStackTrace();
  296. }
  297. return "{}";
  298. }
  299. /**
  300. * @param
  301. * @return
  302. * @throws IOException
  303. * @author 李仁杰
  304. * 从专利之星获取中国专利摘要附图
  305. */
  306. public String getPictureApi(String appNo) {
  307. String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + appNo;
  308. String appId = "2000041";
  309. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  310. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  311. String Sign = appId + appkey + currentTimeMillis.toString();
  312. String signMd5 = FormatUtil.MD5(Sign);
  313. // 创建一个OkHttpClient对象
  314. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  315. .connectTimeout(60, TimeUnit.SECONDS)
  316. .writeTimeout(60, TimeUnit.SECONDS)
  317. .readTimeout(60, TimeUnit.SECONDS)
  318. .build();
  319. // 创建一个请求对象
  320. Request request = new Request.Builder().url(url)
  321. .addHeader("_appid", "2000041")
  322. .addHeader("_timestamp", currentTimeMillis.toString())
  323. .addHeader("_sign", signMd5)
  324. .get().build();
  325. // 发送请求获取响应
  326. try {
  327. Response response = okHttpClient.newCall(request).execute();
  328. // 判断请求是否成功
  329. if (response.isSuccessful()) {
  330. response.body().toString();
  331. // 打印服务端返回结果
  332. return Objects.requireNonNull(response.body()).string();
  333. }
  334. } catch (IOException e) {
  335. e.printStackTrace();
  336. }
  337. return "{}";
  338. }
  339. /**
  340. * @param appNo
  341. * @return
  342. * @throws IOException
  343. * @author 李仁杰
  344. * 从专利之星获取中国专利外观图
  345. */
  346. public String getWGPictureApi(String appNo) throws IOException {
  347. String url = "https://api.patentstar.com.cn/api/Patent/CnWGImage/" + appNo;
  348. String appId = "2000041";
  349. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  350. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  351. String Sign = appId + appkey + currentTimeMillis.toString();
  352. String signMd5 = FormatUtil.MD5(Sign);
  353. // 创建一个OkHttpClient对象
  354. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  355. .connectTimeout(60, TimeUnit.SECONDS)
  356. .writeTimeout(60, TimeUnit.SECONDS)
  357. .readTimeout(60, TimeUnit.SECONDS)
  358. .build();
  359. // 创建一个请求对象
  360. Request request = new Request.Builder().url(url)
  361. .addHeader("_appid", "2000041")
  362. .addHeader("_timestamp", currentTimeMillis.toString())
  363. .addHeader("_sign", signMd5)
  364. .get().build();
  365. // 发送请求获取响应
  366. try {
  367. Response response = okHttpClient.newCall(request).execute();
  368. // 判断请求是否成功
  369. if (response.isSuccessful()) {
  370. response.body().toString();
  371. // 打印服务端返回结果
  372. return Objects.requireNonNull(response.body()).string();
  373. }
  374. } catch (IOException e) {
  375. e.printStackTrace();
  376. }
  377. return "{}";
  378. }
  379. /**
  380. * @param appNo
  381. * @return
  382. * @throws IOException
  383. * @author 李仁杰
  384. * 从专利之星获取中国专利法律状态
  385. */
  386. public String getCnLegalApi(String appNo) {
  387. String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/" + appNo;
  388. String appId = "2000041";
  389. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  390. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  391. String Sign = appId + appkey + currentTimeMillis.toString();
  392. String signMd5 = FormatUtil.MD5(Sign);
  393. // 创建一个OkHttpClient对象
  394. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  395. .connectTimeout(60, TimeUnit.SECONDS)
  396. .writeTimeout(60, TimeUnit.SECONDS)
  397. .readTimeout(60, TimeUnit.SECONDS)
  398. .build();
  399. // 创建一个请求对象
  400. Request request = new Request.Builder().url(url)
  401. .addHeader("_appid", "2000041")
  402. .addHeader("_timestamp", currentTimeMillis.toString())
  403. .addHeader("_sign", signMd5)
  404. .get().build();
  405. // 发送请求获取响应
  406. try {
  407. Response response = okHttpClient.newCall(request).execute();
  408. // 判断请求是否成功
  409. if (response.isSuccessful()) {
  410. response.body().toString();
  411. // 打印服务端返回结果
  412. return Objects.requireNonNull(response.body()).string();
  413. }
  414. } catch (IOException e) {
  415. e.printStackTrace();
  416. }
  417. return "{}";
  418. }
  419. /**
  420. * @param appNo
  421. * @return
  422. * @throws IOException
  423. * @author 李仁杰
  424. * 从专利之星获取中国专利全文图片
  425. */
  426. public String getCnPdfApi(String appNo) throws IOException {
  427. String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/" + appNo;
  428. String appId = "2000041";
  429. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  430. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  431. String Sign = appId + appkey + currentTimeMillis.toString();
  432. String signMd5 = FormatUtil.MD5(Sign);
  433. // 创建一个OkHttpClient对象
  434. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  435. .connectTimeout(60, TimeUnit.SECONDS)
  436. .writeTimeout(60, TimeUnit.SECONDS)
  437. .readTimeout(60, TimeUnit.SECONDS)
  438. .build();
  439. // 创建一个请求对象
  440. Request request = new Request.Builder().url(url)
  441. .addHeader("_appid", "2000041")
  442. .addHeader("_timestamp", currentTimeMillis.toString())
  443. .addHeader("_sign", signMd5)
  444. .get().build();
  445. // 发送请求获取响应
  446. try {
  447. Response response = okHttpClient.newCall(request).execute();
  448. // 判断请求是否成功
  449. if (response.isSuccessful()) {
  450. response.body().toString();
  451. // 打印服务端返回结果
  452. return Objects.requireNonNull(response.body()).string();
  453. }
  454. } catch (IOException e) {
  455. e.printStackTrace();
  456. }
  457. return "{}";
  458. }
  459. /**
  460. * @param appNo
  461. * @return
  462. * @throws IOException
  463. * @author 李仁杰
  464. * 从专利之星获取中国专利全文文本
  465. */
  466. public String getCnFullXmlApi(String appNo) throws IOException {
  467. String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/" + appNo;
  468. String appId = "2000041";
  469. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  470. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  471. String Sign = appId + appkey + currentTimeMillis.toString();
  472. String signMd5 = FormatUtil.MD5(Sign);
  473. // 创建一个OkHttpClient对象
  474. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  475. .connectTimeout(60, TimeUnit.SECONDS)
  476. .writeTimeout(60, TimeUnit.SECONDS)
  477. .readTimeout(60, TimeUnit.SECONDS)
  478. .build();
  479. // 创建一个请求对象
  480. Request request = new Request.Builder().url(url)
  481. .addHeader("_appid", "2000041")
  482. .addHeader("_timestamp", currentTimeMillis.toString())
  483. .addHeader("_sign", signMd5)
  484. .get().build();
  485. // 发送请求获取响应
  486. try {
  487. Response response = okHttpClient.newCall(request).execute();
  488. // 判断请求是否成功
  489. if (response.isSuccessful()) {
  490. response.body().toString();
  491. // 打印服务端返回结果
  492. return Objects.requireNonNull(response.body()).string();
  493. }
  494. } catch (IOException e) {
  495. e.printStackTrace();
  496. }
  497. return "{}";
  498. }
  499. /**
  500. * @param patentNo
  501. * @return
  502. * @throws IOException
  503. * @author 李仁杰
  504. * 从专利之星获取世界专利pdf
  505. */
  506. public String getEnPdfApi(String patentNo) {
  507. String url = " https://api.patentstar.com.cn/api/Patent/EnPdf/" + patentNo;
  508. String appId = "2000041";
  509. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  510. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  511. String Sign = appId + appkey + currentTimeMillis.toString();
  512. String signMd5 = FormatUtil.MD5(Sign);
  513. // 创建一个OkHttpClient对象
  514. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  515. .connectTimeout(60, TimeUnit.SECONDS)
  516. .writeTimeout(60, TimeUnit.SECONDS)
  517. .readTimeout(60, TimeUnit.SECONDS)
  518. .build();
  519. // 创建一个请求对象
  520. Request request = new Request.Builder().url(url)
  521. .addHeader("_appid", "2000041")
  522. .addHeader("_timestamp", currentTimeMillis.toString())
  523. .addHeader("_sign", signMd5)
  524. .get().build();
  525. // 发送请求获取响应
  526. try {
  527. Response response = okHttpClient.newCall(request).execute();
  528. // 判断请求是否成功
  529. if (response.isSuccessful()) {
  530. response.body().toString();
  531. // 打印服务端返回结果
  532. return Objects.requireNonNull(response.body()).string();
  533. }
  534. } catch (IOException e) {
  535. e.printStackTrace();
  536. }
  537. return "{}";
  538. }
  539. /**
  540. * @param patentNo
  541. * @return
  542. * @throws IOException
  543. * @author 李仁杰
  544. * 从专利之星获取世界专利著录信息
  545. */
  546. public String getENBibApi(String patentNo) {
  547. String url = "https://api.patentstar.com.cn/api/Patent/ENBib/" + patentNo;
  548. String appId = "2000041";
  549. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  550. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  551. String Sign = appId + appkey + currentTimeMillis.toString();
  552. String signMd5 = FormatUtil.MD5(Sign);
  553. // 创建一个OkHttpClient对象
  554. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  555. .connectTimeout(60, TimeUnit.SECONDS)
  556. .writeTimeout(60, TimeUnit.SECONDS)
  557. .readTimeout(60, TimeUnit.SECONDS)
  558. .build();
  559. // 创建一个请求对象
  560. Request request = new Request.Builder().url(url)
  561. .addHeader("_appid", "2000041")
  562. .addHeader("_timestamp", currentTimeMillis.toString())
  563. .addHeader("_sign", signMd5)
  564. .get().build();
  565. // 发送请求获取响应
  566. try {
  567. Response response = okHttpClient.newCall(request).execute();
  568. // 判断请求是否成功
  569. if (response.isSuccessful()) {
  570. response.body().toString();
  571. // 打印服务端返回结果
  572. return Objects.requireNonNull(response.body()).string();
  573. }
  574. } catch (IOException e) {
  575. e.printStackTrace();
  576. }
  577. return "{}";
  578. }
  579. /**
  580. * @param patentNo
  581. * @return
  582. * @throws IOException
  583. * @author 李仁杰
  584. * 从专利之星获取同族专利
  585. */
  586. public String getFamilyByPubNoApi(String patentNo) {
  587. String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/" + patentNo;
  588. String appId = "2000041";
  589. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  590. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  591. String Sign = appId + appkey + currentTimeMillis.toString();
  592. String signMd5 = FormatUtil.MD5(Sign);
  593. // 创建一个OkHttpClient对象
  594. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  595. .connectTimeout(60, TimeUnit.SECONDS)
  596. .writeTimeout(60, TimeUnit.SECONDS)
  597. .readTimeout(60, TimeUnit.SECONDS)
  598. .build();
  599. // 创建一个请求对象
  600. Request request = new Request.Builder().url(url)
  601. .addHeader("_appid", "2000041")
  602. .addHeader("_timestamp", currentTimeMillis.toString())
  603. .addHeader("_sign", signMd5)
  604. .get().build();
  605. // 发送请求获取响应
  606. try {
  607. Response response = okHttpClient.newCall(request).execute();
  608. // 判断请求是否成功
  609. if (response.isSuccessful()) {
  610. response.body().toString();
  611. // 打印服务端返回结果
  612. return Objects.requireNonNull(response.body()).string();
  613. }
  614. } catch (IOException e) {
  615. e.printStackTrace();
  616. }
  617. return "{}";
  618. }
  619. /**
  620. * @param patentNo
  621. * @return
  622. * @throws IOException
  623. * @author 李仁杰
  624. * 获得专利被引用次数api
  625. */
  626. public String getCitedNumByPubNoApi(String patentNo) throws IOException {
  627. String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/" + patentNo;
  628. String appId = "2000041";
  629. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  630. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  631. String Sign = appId + appkey + currentTimeMillis.toString();
  632. String signMd5 = FormatUtil.MD5(Sign);
  633. // 创建一个OkHttpClient对象
  634. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  635. .connectTimeout(60, TimeUnit.SECONDS)
  636. .writeTimeout(60, TimeUnit.SECONDS)
  637. .readTimeout(60, TimeUnit.SECONDS)
  638. .build();
  639. // 创建一个请求对象
  640. Request request = new Request.Builder().url(url)
  641. .addHeader("_appid", "2000041")
  642. .addHeader("_timestamp", currentTimeMillis.toString())
  643. .addHeader("_sign", signMd5)
  644. .get().build();
  645. // 发送请求获取响应
  646. try {
  647. Response response = okHttpClient.newCall(request).execute();
  648. // 判断请求是否成功
  649. if (response.isSuccessful()) {
  650. response.body().toString();
  651. // 打印服务端返回结果
  652. return Objects.requireNonNull(response.body()).string();
  653. }
  654. } catch (IOException e) {
  655. e.printStackTrace();
  656. }
  657. return "{}";
  658. }
  659. }