fix(接口测试): 修复mock请求中带中文时,匹配失败的缺陷

--bug=1041236 --user=王孝刚
【接口测试】Mock-Mock规则设置为Query参数值长度等于5,请求Mock地址时,Query参数传入长度等于5的中文字符串,Mock匹配失败
https://www.tapd.cn/55049933/s/1521289
This commit is contained in:
wxg0103 2024-05-27 13:56:36 +08:00 committed by 刘瑞斌
parent ceb6e5b339
commit 793637536c
1 changed files with 4 additions and 18 deletions

View File

@ -13,9 +13,9 @@ import org.springframework.http.MediaType;
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
@ -80,12 +80,13 @@ public class MockServerUtils {
} }
} }
String queryString = request.getQueryString(); String queryString = request.getQueryString();
if (StringUtils.isNotEmpty(queryString)) { if (StringUtils.isNotEmpty(queryString)) {
String[] queryParamArr = queryString.split("&"); String[] queryParamArr = queryString.split("&");
for (String queryParam : queryParamArr) { for (String queryParam : queryParamArr) {
String[] queryParamKV = queryParam.split("="); String[] queryParamKV = queryParam.split("=");
if (queryParamKV.length == 2) { if (queryParamKV.length == 2) {
queryParamsMap.put(queryParamKV[0], queryParamKV[1]); queryParamsMap.put(queryParamKV[0], URLDecoder.decode(queryParamKV[1], StandardCharsets.UTF_8));
} }
} }
} }
@ -159,28 +160,13 @@ public class MockServerUtils {
if (sendParamArr.length > i) { if (sendParamArr.length > i) {
value = sendParamArr[i]; value = sendParamArr[i];
} }
restParams.put(param, value); restParams.put(param, URLDecoder.decode(value, StandardCharsets.UTF_8));
} }
} }
} }
return restParams; return restParams;
} }
private static String getRequestStr(HttpServletRequest request) {
String inputLine;
// 接收到的数据
StringBuilder receiveData = new StringBuilder();
try (BufferedReader in = new BufferedReader(new InputStreamReader(
request.getInputStream(), StandardCharsets.UTF_8))) {
while ((inputLine = in.readLine()) != null) {
receiveData.append(inputLine);
}
} catch (IOException ignored) {
}
return receiveData.toString();
}
public static String getUrlSuffix(String mockUrlInfo, HttpServletRequest request) { public static String getUrlSuffix(String mockUrlInfo, HttpServletRequest request) {
String requestUri = request.getRequestURI(); String requestUri = request.getRequestURI();
String[] urlParamArr = requestUri.split(mockUrlInfo); String[] urlParamArr = requestUri.split(mockUrlInfo);