From 359674e0104f0ea075645f2c57fb25cb36dc0891 Mon Sep 17 00:00:00 2001 From: winter Date: Thu, 9 Nov 2023 21:18:23 +0800 Subject: [PATCH] fix --- .../controller/ProductOrderController.java | 2 +- ...onentsClientRestfulHttpRequestFactory.java | 31 +++++++++++++++++++ .../java/com/iformall/smsdk/SmSdkUtils.java | 14 ++++++--- .../main/java/com/iformall/smsdk/SmUtils.java | 15 ++------- 4 files changed, 45 insertions(+), 17 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/smsdk/HttpComponentsClientRestfulHttpRequestFactory.java diff --git a/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java b/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java index 521dc09..30ca79f 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java @@ -89,7 +89,7 @@ public class ProductOrderController extends BaseController { @ApiOperation("根据id查询接口") @GetMapping("/findByNumber") - @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @ApiImplicitParam(name = "orderNumber", value = "orderNumber", dataType = "String", paramType = "query", required = true) public ResultData findByNumber(String orderNumber) { logger.debug("[" + getIpAddr() + "] ProductOrderController::findByNumber"); diff --git a/suimangService/src/main/java/com/iformall/smsdk/HttpComponentsClientRestfulHttpRequestFactory.java b/suimangService/src/main/java/com/iformall/smsdk/HttpComponentsClientRestfulHttpRequestFactory.java new file mode 100644 index 0000000..21e067f --- /dev/null +++ b/suimangService/src/main/java/com/iformall/smsdk/HttpComponentsClientRestfulHttpRequestFactory.java @@ -0,0 +1,31 @@ +package com.iformall.smsdk; + +import java.net.URI; + +import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; +import org.apache.http.client.methods.HttpUriRequest; +import org.springframework.http.HttpMethod; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; + +public class HttpComponentsClientRestfulHttpRequestFactory extends HttpComponentsClientHttpRequestFactory{ + + + @Override + protected HttpUriRequest createHttpUriRequest(HttpMethod httpMethod, URI uri) { + if (httpMethod == HttpMethod.GET) { + return new HttpGetRequestWithEntity(uri); + } + return super.createHttpUriRequest(httpMethod, uri); + } + //核心代码 + private static final class HttpGetRequestWithEntity extends HttpEntityEnclosingRequestBase { + public HttpGetRequestWithEntity(final URI uri) { + super.setURI(uri); + } + + @Override + public String getMethod() { + return HttpMethod.GET.name(); + } + } +} diff --git a/suimangService/src/main/java/com/iformall/smsdk/SmSdkUtils.java b/suimangService/src/main/java/com/iformall/smsdk/SmSdkUtils.java index 28384ea..3ff92b3 100644 --- a/suimangService/src/main/java/com/iformall/smsdk/SmSdkUtils.java +++ b/suimangService/src/main/java/com/iformall/smsdk/SmSdkUtils.java @@ -39,13 +39,19 @@ public class SmSdkUtils { @PostConstruct public void init() { smSdkUtils = this; + initRestTemplate(); + } + + private void initRestTemplate() { + //修改restTemplate的RequestFactory使其支持Get携带body参数 + restTemplate.setRequestFactory(new HttpComponentsClientRestfulHttpRequestFactory()); } //POST public static AiPreviewResult preview(SmPreviewVideoDTO dto) { String url = smSdkUtils.smSdkProperties.getBaseUrl() + SmSdkConstant.PREVIEW_VIDEO; log.info("(遂芒api)【预览视频】接口的请求参数:{}", JSON.toJSON(dto)); - ResponseEntity response = smSdkUtils.restTemplate.exchange(url, HttpMethod.POST, SmUtils.postHttpEntity(JSON.parseObject(JSON.toJSONString(dto), Map.class)), String.class); + ResponseEntity response = smSdkUtils.restTemplate.exchange(url, HttpMethod.POST, SmUtils.getHttpEntity(JSON.parseObject(JSON.toJSONString(dto), Map.class)), String.class); log.info("(遂芒api)【预览视频】接口的响应数据:{}", JSON.toJSON(response.getBody())); JSONObject resultObject = JSON.parseObject(response.getBody()); String data = resultObject.getString("data"); @@ -57,7 +63,7 @@ public class SmSdkUtils { String url = smSdkUtils.smSdkProperties.getBaseUrl() + SmSdkConstant.GENERATE_VIDEO; // log.info("(遂芒api)【生成视频】接口的请求参数:{}", JSON.toJSONString(dto)); log.info("(遂芒api)【生成视频】接口的请求参数:{}", JSON.toJSON(aiVideoParam.getTask_id())); - ResponseEntity response = smSdkUtils.restTemplate.exchange(url, HttpMethod.POST, SmUtils.postHttpEntity(JSON.parseObject(JSON.toJSONString(aiVideoParam), Map.class)), String.class); + ResponseEntity response = smSdkUtils.restTemplate.exchange(url, HttpMethod.POST, SmUtils.getHttpEntity(JSON.parseObject(JSON.toJSONString(aiVideoParam), Map.class)), String.class); log.info("(遂芒api)【生成视频】接口的响应数据:{}", JSON.toJSON(response.getBody())); JSONObject resultObject = JSON.parseObject(response.getBody()); String data = resultObject.getString("data"); @@ -69,7 +75,7 @@ public class SmSdkUtils { String url = smSdkUtils.smSdkProperties.getBaseUrl() + SmSdkConstant.CURRENT_SERVICE_INFO; Map param = new HashMap(); HttpEntity> httEntity = SmUtils.getHttpEntity(param); - ResponseEntity response = smSdkUtils.restTemplate.exchange(url, HttpMethod.GET,httEntity , String.class,param); + ResponseEntity response = smSdkUtils.restTemplate.exchange(url, HttpMethod.GET,httEntity , String.class); log.info("(遂芒api)【查询当前接入方】接口的响应数据:{}", JSON.toJSON(response.getBody())); JSONObject resultObject = JSON.parseObject(response.getBody()); String data = resultObject.getString("data"); @@ -83,7 +89,7 @@ public class SmSdkUtils { parm.put("pageSize", pageSize); HttpEntity> httEntity = SmUtils.getHttpEntity(parm); String url = smSdkUtils.smSdkProperties.getBaseUrl() + SmSdkConstant.CURRENT_SERVICE_VIDEO_RECORDS+"?pageNum="+pageNum+"&pageSize="+pageSize; - ResponseEntity response = smSdkUtils.restTemplate.exchange(url, HttpMethod.GET, httEntity, String.class,parm); + ResponseEntity response = smSdkUtils.restTemplate.exchange(url, HttpMethod.GET, httEntity, String.class); log.info("(遂芒api)【查询当前接入方】接口的响应数据:{}", JSON.toJSON(response.getBody())); JSONObject resultObject = JSON.parseObject(response.getBody()); String data = resultObject.getString("data"); diff --git a/suimangService/src/main/java/com/iformall/smsdk/SmUtils.java b/suimangService/src/main/java/com/iformall/smsdk/SmUtils.java index aa38745..3aa899e 100644 --- a/suimangService/src/main/java/com/iformall/smsdk/SmUtils.java +++ b/suimangService/src/main/java/com/iformall/smsdk/SmUtils.java @@ -12,6 +12,7 @@ import org.apache.http.protocol.HTTP; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; @@ -32,27 +33,17 @@ public class SmUtils { smUtils = this; } - public static HttpEntity> postHttpEntity(Map paramMap) { + public static HttpEntity> getHttpEntity(Map paramMap) { paramMap.put(SmSdkConstant.TIMESTAMP, System.currentTimeMillis()); WxThirdPartyApi apiConfig = getApiConfig(); HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); httpHeaders.set(SmSdkConstant.APP_KEY, apiConfig.getAppId() + "&" + apiConfig.getAppKey()); String sign = SignUtils.getSign(apiConfig.getSignKey(), paramMap, "MD5"); httpHeaders.set(SmSdkConstant.SIGN, sign); return new HttpEntity<>(paramMap, httpHeaders); } - public static HttpEntity> getHttpEntity(Map paramMap) { - paramMap.put(SmSdkConstant.TIMESTAMP, System.currentTimeMillis()); - WxThirdPartyApi apiConfig = getApiConfig(); - HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.set(SmSdkConstant.APP_KEY, apiConfig.getAppId() + "&" + apiConfig.getAppKey()); - String sign = SignUtils.getSign(apiConfig.getSignKey(), paramMap, "MD5"); - httpHeaders.set(SmSdkConstant.SIGN, sign); - return new HttpEntity>(null,httpHeaders); - } - - //私有化统一用系统的来调用 public static WxThirdPartyApi getApiConfig() { List wxThirdPartyApis = smUtils.wxThirdPartyApiMapper.selectList(new LambdaQueryWrapper()