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);