summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhangshuai <[email protected]>2023-06-20 10:01:52 +0800
committerzhangshuai <[email protected]>2023-06-20 10:01:52 +0800
commit51d6fbe40dfd019f51d4b2fa840fa4712a585e99 (patch)
tree2bf00f1090cbbfcbaf0f746bb31567fa76995244
parent1a14afbf34ba32d76b5c01b053ec6351e3adab09 (diff)
fix: NEZ-2888 修复 UrlBuilder 对特殊字符 "%" 未编码问题
-rw-r--r--nz-admin/src/main/java/com/nis/modules/agent/util/AgentUtil.java40
-rw-r--r--nz-admin/src/main/java/com/nis/modules/agent/util/TalonUtil.java27
2 files changed, 57 insertions, 10 deletions
diff --git a/nz-admin/src/main/java/com/nis/modules/agent/util/AgentUtil.java b/nz-admin/src/main/java/com/nis/modules/agent/util/AgentUtil.java
index 011ea234..8bd9aaef 100644
--- a/nz-admin/src/main/java/com/nis/modules/agent/util/AgentUtil.java
+++ b/nz-admin/src/main/java/com/nis/modules/agent/util/AgentUtil.java
@@ -18,6 +18,7 @@ import com.nis.common.utils.Tool;
import com.nis.modules.agent.entity.Agent;
import com.nis.modules.agent.service.PromApiService;
import com.nis.modules.sys.service.SysConfigService;
+import com.sun.javafx.fxml.builder.URLBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@@ -39,6 +40,7 @@ import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -82,9 +84,18 @@ public class AgentUtil {
String agentPath = sysConfigService.getValueOrDefault(Constant.CONFAGENT_PATH, "");
path = path.startsWith("/") ? (String.format("%s%s", agentPath, path))
: (String.format("%s/%s", agentPath, path));
- String urlString = UrlBuilder.create().setScheme(server.getProtocol()).setHost(server.getHost())
+ /*String urlString = UrlBuilder.create().setScheme(server.getProtocol()).setHost(server.getHost())
.setPort(server.getPort()).setPath(UrlPath.of(path, Charset.forName("UTF-8")))
- .setQuery(UrlQuery.of(queryString, Charset.forName("UTF-8"), false, true)).toString();
+ .setQuery(UrlQuery.of(queryString, Charset.forName("UTF-8"), false, true)).toString();*/
+ String urlString = new UrlBuilder(
+ server.getProtocol(),
+ server.getHost(),
+ Integer.valueOf(server.getPort()),
+ UrlPath.of(path, Charset.forName("UTF-8")),
+ UrlQuery.of(queryString, Charset.forName("UTF-8"), false, true),
+ null,
+ StandardCharsets.UTF_8).toString();
+
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.AUTHORIZATION, server.getToken());
HttpEntity httpEntity = body == null ? new HttpEntity(headers) : new HttpEntity(body, headers);
@@ -192,8 +203,16 @@ public class AgentUtil {
* @return
*/
public static JSONObject getForObject(Agent server, String url, Map requestParam) {
- UrlBuilder urlBuilder = UrlBuilder.create().setScheme(server.getProtocol()).setHost(server.getHost())
- .setPort(server.getPort()).setPath(UrlPath.of(url, Charset.forName("UTF-8")));
+ /*UrlBuilder urlBuilder = UrlBuilder.create().setScheme(server.getProtocol()).setHost(server.getHost())
+ .setPort(server.getPort()).setPath(UrlPath.of(url, Charset.forName("UTF-8")));*/
+
+ UrlBuilder urlBuilder = new UrlBuilder(server.getProtocol(),
+ server.getHost(),
+ Integer.valueOf(server.getPort()),
+ UrlPath.of(url, Charset.forName("UTF-8")),
+ null,
+ null,
+ StandardCharsets.UTF_8);
UrlQuery urlQuery = new UrlQuery(true);
Iterator<Map.Entry<String, Object>> iterator = ((Map<String, Object>) requestParam).entrySet().iterator();
@@ -348,9 +367,18 @@ public class AgentUtil {
queryString = StrUtil.isNotBlank(queryString) ? queryString : "";
queryString = URLUtil.decode(queryString);
- String urlStr = UrlBuilder.create().setScheme(server.getProtocol()).setHost(server.getHost())
+ /*String urlStr = UrlBuilder.create().setScheme(server.getProtocol()).setHost(server.getHost())
.setPort(server.getPort()).setPath(UrlPath.of(url, Charset.forName("UTF-8")))
- .setQuery(UrlQuery.of(queryString, Charset.forName("UTF-8"), false, true)).toString();
+ .setQuery(UrlQuery.of(queryString, Charset.forName("UTF-8"), false, true)).toString();*/
+
+ String urlStr = new UrlBuilder(
+ server.getProtocol(),
+ server.getHost(),
+ Integer.valueOf(server.getPort()),
+ UrlPath.of(url, Charset.forName("UTF-8")),
+ UrlQuery.of(queryString, Charset.forName("UTF-8"), false, true),
+ null,
+ StandardCharsets.UTF_8).toString();
String method = request.getMethod();
ResponseEntity<byte[]> exchange = restTemplate.exchange(new URI(urlStr), HttpMethod.resolve(method),
diff --git a/nz-admin/src/main/java/com/nis/modules/agent/util/TalonUtil.java b/nz-admin/src/main/java/com/nis/modules/agent/util/TalonUtil.java
index 5e48e5a2..4fb8c492 100644
--- a/nz-admin/src/main/java/com/nis/modules/agent/util/TalonUtil.java
+++ b/nz-admin/src/main/java/com/nis/modules/agent/util/TalonUtil.java
@@ -20,6 +20,7 @@ import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.*;
@Configuration
@@ -118,12 +119,21 @@ public class TalonUtil {
// build urlQuery
UrlQuery urlQuery = TalonUtil.buildUrlQuery(requestParam);
- UrlBuilder urlBuilder = UrlBuilder.create()
+ /*UrlBuilder urlBuilder = UrlBuilder.create()
.setScheme("http")
.setHost(targetUrl.split(":")[0])
.setPort(Integer.valueOf(targetUrl.split(":")[1]))
.setQuery(urlQuery)
- .setPath(UrlPath.of(String.format("%s%s", "/nz-talon", path), Charset.forName("UTF-8")));
+ .setPath(UrlPath.of(String.format("%s%s", "/nz-talon", path), Charset.forName("UTF-8")));*/
+
+ UrlBuilder urlBuilder = new UrlBuilder(
+ "http",
+ targetUrl.split(":")[0],
+ Integer.valueOf(targetUrl.split(":")[1]),
+ UrlPath.of(String.format("%s%s", "/nz-talon", path), Charset.forName("UTF-8")),
+ urlQuery,
+ null,
+ StandardCharsets.UTF_8);
String urlStr = urlBuilder.build();
HttpHeaders headers = new HttpHeaders();
@@ -157,12 +167,21 @@ public class TalonUtil {
Agent server = promApiService.getOneAvaliableGlobalAgent();
String agentPath = sysConfigService.getValue(Constant.CONFAGENT_PATH);
- UrlBuilder urlBuilder = UrlBuilder.create()
+ /*UrlBuilder urlBuilder = UrlBuilder.create()
.setScheme(server.getProtocol())
.setHost(server.getHost())
.setPort(server.getPort())
.setQuery(urlQuery)
- .setPath(UrlPath.of(String.format("%s%s%s", agentPath, "/talon/proxy", path), Charset.forName("UTF-8")));
+ .setPath(UrlPath.of(String.format("%s%s%s", agentPath, "/talon/proxy", path), Charset.forName("UTF-8")));*/
+
+ UrlBuilder urlBuilder = new UrlBuilder(
+ server.getProtocol(),
+ server.getHost(),
+ Integer.valueOf(server.getPort()),
+ UrlPath.of(String.format("%s%s%s", agentPath, "/talon/proxy", path), Charset.forName("UTF-8")),
+ urlQuery,
+ null,
+ StandardCharsets.UTF_8);
String urlStr = urlBuilder.build();
HttpHeaders headers = new HttpHeaders();