query param encoding, decoding 처리

This commit is contained in:
현성필
2024-05-09 17:33:46 +09:00
parent d2ae20f420
commit 3e43e7a434
2 changed files with 13 additions and 3 deletions
@@ -2,7 +2,6 @@ package com.eactive.testmaster.api.dto;
import java.io.IOException; import java.io.IOException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -13,7 +12,7 @@ public class MockRequest {
public static Map<String, String> parseQueryString(HttpServletRequest request) { public static Map<String, String> parseQueryString(HttpServletRequest request) {
Map<String, String> queryParams = new HashMap<>(); Map<String, String> queryParams = new HashMap<>();
String queryString = URLDecoder.decode(request.getQueryString()); String queryString = request.getQueryString()!=null?URLDecoder.decode(request.getQueryString()) : null;
if (queryString != null) { if (queryString != null) {
String[] queryParamsArr = queryString.split("&"); String[] queryParamsArr = queryString.split("&");
for (String queryParam : queryParamsArr) { for (String queryParam : queryParamsArr) {
@@ -30,6 +30,7 @@ import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory; import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import io.netty.util.CharsetUtil; import io.netty.util.CharsetUtil;
import java.net.URLEncoder;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import javax.net.ssl.SSLException; import javax.net.ssl.SSLException;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -84,8 +85,18 @@ public class NettyHttpApiClient implements ApiClient {
} }
String fullPath = server.getBasePath() + apiRequest.getPath(); 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("Host", host);
request.headers().set("Connection", HttpHeaderValues.CLOSE); request.headers().set("Connection", HttpHeaderValues.CLOSE);