protected void initParameters()

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