in dubbo-rpc-extensions/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/request/RequestFacade.java [61:111]
protected void initParameters() {
String requestURI = getRequestURI();
String decodedRequestURI = null;
try {
String enc = DEFAULT_CHARSET;
ArrayList<String> charset = headers.get(RestConstant.ACCEPT_CHARSET);
// take the highest priority charset
String[] parsed = DataParseUtils.parseAcceptCharset(charset);
if (parsed != null && parsed.length > 0) {
enc = parsed[0].toUpperCase();
}
decodedRequestURI = URLDecoder.decode(requestURI, enc);
} catch (Throwable t) {
// do nothing, try best to deliver
}
if (StringUtils.isNotEmpty(decodedRequestURI)) {
requestURI = decodedRequestURI;
}
if (requestURI != null && requestURI.contains("?")) {
String queryString = requestURI.substring(requestURI.indexOf("?") + 1);
path = requestURI.substring(0, requestURI.indexOf("?"));
String[] split = queryString.split("&");
for (String params : split) {
// key a= ;value b==c
int index = params.indexOf("=");
if (index <= 0) {
continue;
}
String name = params.substring(0, index);
String value = params.substring(index + 1);
if (!StringUtils.isEmpty(name)) {
ArrayList<String> values = parameters.get(name);
if (values == null) {
values = new ArrayList<>();
parameters.put(name, values);
}
values.add(value);
}
}
} else {
path = requestURI;
}
}