diff --git a/pom.xml b/pom.xml
index 2a789cd..691e8bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,10 +20,10 @@
org.springframework.cloud
spring-cloud-starter-gateway
-
+
org.projectlombok
lombok
@@ -35,6 +35,12 @@
spring-webmvc
+
+ com.squareup.okhttp3
+ okhttp
+ 4.11.0
+
+
diff --git a/src/main/java/com/yxt/ss/gateway/api/rest/Signature.java b/src/main/java/com/yxt/ss/gateway/api/rest/Signature.java
index ee72d5d..89df505 100644
--- a/src/main/java/com/yxt/ss/gateway/api/rest/Signature.java
+++ b/src/main/java/com/yxt/ss/gateway/api/rest/Signature.java
@@ -1,18 +1,24 @@
package com.yxt.ss.gateway.api.rest;
import com.yxt.ss.gateway.api.utils.ResultBean;
+import com.yxt.ss.gateway.api.utils.SignatureQuery;
import com.yxt.ss.gateway.api.utils.SignatureUtil;
+import okhttp3.*;
+import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
+import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
+import java.util.concurrent.TimeUnit;
/**
* @description:
@@ -30,10 +36,102 @@ public class Signature {
//获取签名
@PostMapping("/getSign")
- ResultBean getSign(@RequestParam("parameters") Map parameters, @RequestParam("appKey") String appKey, @RequestParam("secret") String secret) throws UnsupportedEncodingException, NoSuchAlgorithmException {
+ ResultBean getSign(SignatureQuery query) {
ResultBean rb = ResultBean.fireFail();
- String sign = SignatureUtil.generateSignature(parameters, appKey, secret);
- return rb.success().setData(sign);
+ try {
+ Map formData = new HashMap<>();
+ Map map = query.getParameters();
+ formData.put("key1", map.getOrDefault("key1", "").toString());
+ String appKey = query.getAppKey();
+ String secret = query.getSecret();
+
+ // 生成签名
+ String sign = SignatureUtil.generateSignature(formData, appKey, secret);
+ return rb.success().setData(sign);
+ } catch (UnsupportedEncodingException e) {
+ return rb.setMsg("Unsupported encoding: " + e.getMessage());
+ } catch (NoSuchAlgorithmException e) {
+ return rb.setMsg("Algorithm not found: " + e.getMessage());
+ }
+ }
+
+ public static void main(String[] args) {
+ OkHttpClient client = new OkHttpClient.Builder()
+ .connectTimeout(10, TimeUnit.SECONDS)
+ .writeTimeout(10, TimeUnit.SECONDS)
+ .readTimeout(30, TimeUnit.SECONDS)
+ .build();
+
+ try {
+ // 构建URL
+ String endPoint = "http://127.0.0.1:9999";
+ String path = "/signature/getSign";
+
+ // 假设data是一个包含所有参数的字典
+ Map data = new HashMap<>();
+ data.put("parameters[key1]", "value1");
+ data.put("parameters[key2]", "value2");
+ data.put("appKey", "testAppKey");
+ data.put("secret", "testSecret");
+
+ // 创建FormData
+ FormBody.Builder formBuilder = new FormBody.Builder();
+ for (Map.Entry entry : data.entrySet()) {
+ formBuilder.add(entry.getKey(), entry.getValue());
+ }
+ RequestBody formBody = formBuilder.build();
+
+ // 构建POST请求
+ String url = endPoint + path;
+ System.out.println("Request URL: " + url);
+ System.out.println("Request Data: " + data);
+
+ Request request = new Request.Builder()
+ .url(url)
+ .post(formBody)
+ .build();
+
+ // 发送请求
+ try (Response response = client.newCall(request).execute()) {
+ if (response.isSuccessful()) {
+ System.out.println("Response: " + response.body().string());
+ } else {
+ System.err.println("Request failed: " + response.code());
+ }
+ }
+ } catch (IOException e) {
+ System.err.println("Network error: " + e.getMessage());
+ } catch (Exception e) {
+ System.err.println("Unexpected error: " + e.getMessage());
+ }
+ }
+
+ //获取签名
+ @PostMapping("/getSign2")
+ ResultBean getSign2(@RequestParam("parameters") Map parameters,
+ @RequestParam("appKey") String appKey,
+ @RequestParam("secret") String secret) {
+ ResultBean rb = ResultBean.fireFail();
+ try {
+ // 1. 参数校验
+ if (parameters == null || parameters.isEmpty()) {
+ return rb.setMsg("Parameters cannot be empty.");
+ }
+ if (StringUtils.isEmpty(appKey)) {
+ return rb.setMsg("AppKey cannot be empty.");
+ }
+ if (StringUtils.isEmpty(secret)) {
+ return rb.setMsg("Secret cannot be empty.");
+ }
+
+ // 生成签名
+ String sign = SignatureUtil.generateSignature(parameters, appKey, secret);
+ return rb.success().setData(sign);
+ } catch (UnsupportedEncodingException e) {
+ return rb.setMsg("Unsupported encoding: " + e.getMessage());
+ } catch (NoSuchAlgorithmException e) {
+ return rb.setMsg("Algorithm not found: " + e.getMessage());
+ }
}
@@ -42,45 +140,73 @@ public class Signature {
* 返回系统参数
*/
@PostMapping("/getSignParameters")
- public ResultBean