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.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<String, String> parseQueryString(HttpServletRequest request) {
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) {
String[] queryParamsArr = queryString.split("&");
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.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);