diff options
| author | zhangshuai <[email protected]> | 2023-06-20 10:01:52 +0800 |
|---|---|---|
| committer | zhangshuai <[email protected]> | 2023-06-20 10:01:52 +0800 |
| commit | 51d6fbe40dfd019f51d4b2fa840fa4712a585e99 (patch) | |
| tree | 2bf00f1090cbbfcbaf0f746bb31567fa76995244 | |
| parent | 1a14afbf34ba32d76b5c01b053ec6351e3adab09 (diff) | |
fix: NEZ-2888 修复 UrlBuilder 对特殊字符 "%" 未编码问题
| -rw-r--r-- | nz-admin/src/main/java/com/nis/modules/agent/util/AgentUtil.java | 40 | ||||
| -rw-r--r-- | nz-admin/src/main/java/com/nis/modules/agent/util/TalonUtil.java | 27 |
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(); |
