WebSocket和HTTP请求中获取正确的请求地址,用户ant请求匹配

    /**
     *  获取请求中的url
     */
    public static String getUrl(ServerHttpRequest serverHttpRequest) {
        HttpServletRequest request = ((ServletServerHttpRequest) serverHttpRequest).getServletRequest();
        //获取当前访问url
        String url = buildRequestUrl(request);
        int firstQuestionMarkIndex = url.indexOf("?");
        if (firstQuestionMarkIndex != -1) {
            return url.substring(0, firstQuestionMarkIndex);
        }
        return url;
    }
    /**
     * 获取URL
     * @param r
     * @return
     */
    private static String buildRequestUrl(HttpServletRequest r) {
        return buildRequestUrl(r.getServletPath(), r.getRequestURI(), r.getContextPath(),
                r.getPathInfo(), r.getQueryString());
    }

    /**
     * 获取URL
     * @param servletPath
     * @param requestURI
     * @param contextPath
     * @param pathInfo
     * @param queryString
     * @return
     */
    private static String buildRequestUrl(String servletPath, String requestURI,
                                   String contextPath, String pathInfo, String queryString) {

        StringBuilder url = new StringBuilder();

        if (servletPath != null) {
            url.append(servletPath);
            if (pathInfo != null) {
                url.append(pathInfo);
            }
        }
        else {
            url.append(requestURI.substring(contextPath.length()));
        }

        if (queryString != null) {
            url.append("?").append(queryString);
        }

        return url.toString();
    }
发布了149 篇原创文章 · 获赞 36 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/zhuwei_clark/article/details/103642808