В инфраструктуре цитрусовых до 2.7.5, несколько параметров запроса могли быть отправлены в HttpClientRequestActionBuilder, где, как в 2.7.6, это не может быть, он использует Set.
После того, как я посмотрел исходный код, обнаружил, что в 2.7.6
public HttpMessage queryParam(String name, String value) {
if (!StringUtils.hasText(name)) {
throw new CitrusRuntimeException("Invalid query param name - must not be empty!");
}
this.queryParams.put(name, value);
String queryParamString = queryParams.entrySet()
.stream()
.map(entry -> entry.getKey() + (entry.getValue() != null ? "=" + entry.getValue() : ""))
.collect(Collectors.joining(","));
header(HttpMessageHeaders.HTTP_QUERY_PARAMS, queryParamString);
header(DynamicEndpointUriResolver.QUERY_PARAM_HEADER_NAME, queryParamString);
return this;
}
, где, как и в выпуске до 2.7.6, это было
public HttpMessage queryParam(String name, String value) {
if (!StringUtils.hasText(name)) {
throw new CitrusRuntimeException("Invalid query param name - must not be empty!");
}
String queryParams;
if (getHeader(HttpMessageHeaders.HTTP_QUERY_PARAMS) != null) {
queryParams = getHeader(HttpMessageHeaders.HTTP_QUERY_PARAMS).toString();
queryParams += "," + name + (StringUtils.hasText(value) ? "=" + value : "");
} else {
queryParams = name + (StringUtils.hasText(value) ? "=" + value : "");
}
header(HttpMessageHeaders.HTTP_QUERY_PARAMS, queryParams);
header(DynamicEndpointUriResolver.QUERY_PARAM_HEADER_NAME, queryParams);
return this;
}
В результате, если я использую queryParam ("paramName", "value1"). QueryParam ("paramName "," value2 "), тогда отправляется только paramName с" Value1 ", а не" value2 ".
Могу я спросить, почему эта функция удалена или есть ли обходной путь?