我正在使用Spring cloud zuul代理添加要请求的查询参数。
因此实施了路由过滤器:
@Override
public Object run() {
RequestContext context = RequestContext.getCurrentContext();
Map<String, List<String>> newParameterMap = new HashMap<>();
Map<String, String[]> parameterMap = context.getRequest().getParameterMap();
// getting the current parameter
for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
String key = entry.getKey();
String[] values = entry.getValue();
newParameterMap.put(key, Arrays.asList(values));
}
// add new parameter grp
newParameterMap.put("GRP", Arrays.asList(value));
context.setRequestQueryParams(newParameterMap);
return null;
}
该请求以iso-8859-1编码传入,但在Zuul中已更改为Utf-8
Example:
in: &ORT_BEZ=Geb%E4ude
out: &ORT_BEZ=Geb%EF%BF%BDude
这导致代理后面的旧版Web应用程序出现问题。
如果我在application.properties中使用选项“ force-original-query-string-encoding = true”,则请求已正确传递,但未添加查询参数。
如何强制zuul保持查询参数编码并添加查询参数?