diff --git a/renren-admin/pom.xml b/renren-admin/pom.xml index 2c5300ba..5a032808 100644 --- a/renren-admin/pom.xml +++ b/renren-admin/pom.xml @@ -38,6 +38,7 @@ 1.5.7 linux-x86_64 5.0 + 4.9.3 1.8 @@ -248,6 +249,14 @@ ${ehcache.version} + + + com.squareup.okhttp3 + okhttp + ${okhttp.version} + + + org.bytedeco diff --git a/renren-admin/src/main/java/io/renren/modules/resource/controller/ResourceController.java b/renren-admin/src/main/java/io/renren/modules/resource/controller/ResourceController.java index 85366e3a..c5fc4d12 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/controller/ResourceController.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/controller/ResourceController.java @@ -17,6 +17,10 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import okhttp3.FormBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -274,36 +278,45 @@ public class ResourceController { @GetMapping("knowledgeBase") @ApiOperation("对接知识库数据") public Result knowledgeBase() { - long timestamp = new Date().getTime(); - final MultiValueMap paramMap = new LinkedMultiValueMap<>(); - paramMap.add("app_id", appId); - paramMap.add("interface_id", methodId); - paramMap.add("version", version); - paramMap.add("charset", charset); - paramMap.add("timestamp", String.valueOf(timestamp)); - paramMap.add("origin", origin); + +// final MultiValueMap paramMap = new LinkedMultiValueMap<>(); +// paramMap.add("app_id", appId); +// paramMap.add("interface_id", methodId); +// paramMap.add("version", version); +// paramMap.add("charset", charset); +// paramMap.add("timestamp", String.valueOf(timestamp)); +// paramMap.add("origin", origin); int pageSize = 100; AtomicInteger pageIndex = new AtomicInteger(1); Arrays.stream(catalogIds).map(index -> { List task = new ArrayList<>(); - AtomicBoolean end = new AtomicBoolean(true); + AtomicBoolean end = new AtomicBoolean(false); do { - paramMap.remove("sign"); - paramMap.remove("biz_content"); - RestTemplate restTemplate1 = new RestTemplate(); - final MultiValueMap paramMapIndex = new LinkedMultiValueMap<>(); int page = pageIndex.getAndIncrement(); task.add(CompletableFuture.supplyAsync(() -> { + long timestamp = new Date().getTime(); final JSONObject bizContentParam = new JSONObject(); + OkHttpClient client = new OkHttpClient(); bizContentParam.put("appkey", appKey); bizContentParam.put("catalogId", index); bizContentParam.put("pageIndex", page); bizContentParam.put("pageSize", pageSize); String bizContent_ = bizContentParam.toJSONString(); - paramMapIndex.add("biz_content", bizContent_); - logger.error(index + "分页{}对接知识库数据请求参数:" + JSON.toJSONString(paramMapIndex), page); + // 通过FormBody对象构建Builder来添加表单参数 + final FormBody.Builder signFormBody = new FormBody.Builder() + .add("app_id", appId) + .add("interface_id", methodId) + .add("version", version) + .add("timestamp", String.valueOf(timestamp)) + .add("origin", origin) + .add("biz_content", bizContent_); + logger.error(index + "分页{}对接知识库数据请求参数:" + signFormBody.build().contentType().toString(), page); + + Request signRequest = new Request.Builder().url(sign).post(signFormBody.build()).build(); try { - String signResult = restTemplate1.postForObject(sign, paramMapIndex, String.class); + Response signResponse = + client.newCall(signRequest).execute(); + String signResult = signResponse.body().string(); logger.error("{}分页signResult数据:" + signResult, page); JSONObject signJsonObject = JSON.parseObject(signResult); if (!signJsonObject.containsKey("data")) { @@ -318,8 +331,11 @@ public class ResourceController { } Map signData = (Map) signJsonObject.get("data"); String signString = signData.get("sign").toString(); - paramMapIndex.add("sign", signString); - String gatewayResult = restTemplate1.postForObject(gateway, paramMapIndex, String.class); + + signFormBody.add("sign", signString); + Request gatewayRequest = new Request.Builder().url(sign).post(signFormBody.build()).build(); + Response gatewayResponse = client.newCall(gatewayRequest).execute(); + String gatewayResult = gatewayResponse.body().string(); logger.error("{}分页数据:" + gatewayResult, page); JSONObject gatewayJsonObject = JSON.parseObject(gatewayResult); JSONObject gatewayData = JSON.parseObject(gatewayJsonObject.get("data").toString()); @@ -334,8 +350,6 @@ public class ResourceController { logger.error("获取异常:", e); end.set(false); return new JSONArray(); - } finally { - paramMapIndex.clear(); } }).thenAcceptAsync(list -> { logger.info("知识库数据量:{}", list.size());