From 46b527ff9d1887cfe36327da6d17acc7f30b9a64 Mon Sep 17 00:00:00 2001 From: CMM <2198256324@qq.com> Date: Thu, 29 Aug 2024 20:19:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8B=E9=A1=B9=E5=9F=BA=E6=9C=AC=E4=BF=A1?= =?UTF-8?q?=E6=81=AFIRS=E6=8E=A5=E5=8F=A3=E8=B6=85=E6=97=B6=E9=87=8D?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ningdatech/kqapi/irs/manage/IrsManage.java | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/kq-vas-api/src/main/java/com/ningdatech/kqapi/irs/manage/IrsManage.java b/kq-vas-api/src/main/java/com/ningdatech/kqapi/irs/manage/IrsManage.java index a5acde2..a44f416 100644 --- a/kq-vas-api/src/main/java/com/ningdatech/kqapi/irs/manage/IrsManage.java +++ b/kq-vas-api/src/main/java/com/ningdatech/kqapi/irs/manage/IrsManage.java @@ -106,6 +106,8 @@ public class IrsManage { throw BizException.wrap("事项基本信息列表接口调用失败!"); } log.info("content: {}", responseBody); + // 如果请求是请求超时 增加重试机制 + responseBody = retryAndGetResponseBody(responseBody, request); } ParserConfig config = new ParserConfig(); config.propertyNamingStrategy = PropertyNamingStrategy.PascalCase; @@ -119,6 +121,28 @@ public class IrsManage { return responseBody; } + private static String retryAndGetResponseBody(String responseBody, HttpRequest request) { + if (responseBody.contains("Read timed out")){ + int retries = 3; + for (int i = 0; i < retries; i++) { + responseBody = request.execute().body(); + ParserConfig config = new ParserConfig(); + config.propertyNamingStrategy = PropertyNamingStrategy.PascalCase; + JSONObject contentObj = JSONObject.parseObject(responseBody, JSONObject.class, config); + JSONObject data = contentObj.getJSONObject("data"); + Object object = data.get("data"); + if (object instanceof JSONArray){ + break; + } + // 如果最后一次重试仍无法获取到数据,抛出异常 + if (i == retries - 1){ + throw BizException.wrap("事项基本信息列表接口调用失败!"); + } + } + } + return responseBody; + } + public Object itemBasicInfoDetail(String rowGuid) { long timestamp = System.currentTimeMillis(); String sign = MD5.create().digestHex(appKey + appSecret + timestamp); @@ -143,6 +167,8 @@ public class IrsManage { throw BizException.wrap("事项基本信息列表接口调用失败!"); } log.info("content: {}", responseBody); + // 如果请求是请求超时 增加重试机制 + responseBody = retryAndGetResponseBody(responseBody, request); } ParserConfig config = new ParserConfig(); config.propertyNamingStrategy = PropertyNamingStrategy.PascalCase;