From 3e43e7a434395c9ba387e4eb29fd35ea4eb7f598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=98=84=EC=84=B1=ED=95=84?= Date: Thu, 9 May 2024 17:33:46 +0900 Subject: [PATCH] =?UTF-8?q?query=20param=20encoding,=20decoding=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/eactive/testmaster/api/dto/MockRequest.java | 3 +-- .../client/service/NettyHttpApiClient.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/eactive/testmaster/api/dto/MockRequest.java b/src/main/java/com/eactive/testmaster/api/dto/MockRequest.java index 90dff46..b8dad69 100644 --- a/src/main/java/com/eactive/testmaster/api/dto/MockRequest.java +++ b/src/main/java/com/eactive/testmaster/api/dto/MockRequest.java @@ -2,7 +2,6 @@ package com.eactive.testmaster.api.dto; import java.io.IOException; import java.net.URLDecoder; -import java.net.URLEncoder; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -13,7 +12,7 @@ public class MockRequest { public static Map parseQueryString(HttpServletRequest request) { Map queryParams = new HashMap<>(); - String queryString = URLDecoder.decode(request.getQueryString()); + String queryString = request.getQueryString()!=null?URLDecoder.decode(request.getQueryString()) : null; if (queryString != null) { String[] queryParamsArr = queryString.split("&"); for (String queryParam : queryParamsArr) { diff --git a/src/main/java/com/eactive/testmaster/client/service/NettyHttpApiClient.java b/src/main/java/com/eactive/testmaster/client/service/NettyHttpApiClient.java index 2946669..33a2460 100644 --- a/src/main/java/com/eactive/testmaster/client/service/NettyHttpApiClient.java +++ b/src/main/java/com/eactive/testmaster/client/service/NettyHttpApiClient.java @@ -30,6 +30,7 @@ import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.util.InsecureTrustManagerFactory; import io.netty.util.CharsetUtil; +import java.net.URLEncoder; import java.util.concurrent.CompletableFuture; import javax.net.ssl.SSLException; import org.apache.commons.lang3.StringUtils; @@ -84,8 +85,18 @@ public class NettyHttpApiClient implements ApiClient { } String fullPath = server.getBasePath() + apiRequest.getPath(); + String encodedPath = fullPath; - HttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(apiRequest.getMethod()), fullPath, content); + // Check if the fullPath contains query parameters + int queryIndex = fullPath.indexOf('?'); + if (queryIndex != -1) { + String path = fullPath.substring(0, queryIndex); + String queryParams = fullPath.substring(queryIndex + 1); + String encodedQueryParams = URLEncoder.encode(queryParams); + encodedPath = path + "?" + encodedQueryParams; + } + + HttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(apiRequest.getMethod()), encodedPath, content); request.headers().set("Host", host); request.headers().set("Connection", HttpHeaderValues.CLOSE);