java – 如何在GET请求中传递’/’字符?

我有一个api:

http://localhost:8080/mylocalserver/#/reports/{parameter1}/{parameter2}

现在第一个参数是parameter1 =“12345 / EF”
第二个参数是parameter2 =“Text”

我正在使用Spring Rest Controller来创建api.
当使用以上参数进行请求时,它会显示
请求未找到错误.

我已尝试使用URLEncoder.encode以及UriUtils.encode(param,StandardCharsets.UTF_8.name())对参数进行编码和解码,但仍然得到相同的错误.

下面是我试过的代码.

假设我从用户输入中获得了两个变量
parameter1和parameter2

现在我使用以下参数创建一个URL

private void createApi(String parameter1, String parameter2) {
    try {
      String uri = " http://localhost:8080/mylocalserver/#/reports/"+encode(parameter1)+"/"+encode(parameter2)+" ";

      ServletRequestAttributes requestAttributes =
          (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
      HttpServletRequest request = requestAttributes.getRequest();
      HttpServletResponse response = requestAttributes.getResponse();
      request.getRequestDispatcher(uri).forward(request, response);
    } catch (Exception e) {
      LOG.error(e.getMessage(), e);
    }
  }

我的编码方法是:

public String encode(String param) {
    try {
     UriUtils.encode(param, StandardCharsets.UTF_8.name())
      }
    } catch (Exception e) {
      LOG.error(e.getMessage(), e);
    }
    return param;
  }

注意:我使用的是Tomcat 8.5

最佳答案
你的编码方法坏了:

缺少退货声明.

public String encode(String param) {
    try {
        //missing return at this line in your code
        return UriUtils.encode(param, StandardCharsets.UTF_8.name())
      }
    } catch (Exception e) {
      LOG.error(e.getMessage(), e);
    }
    return param;
  }

顺便说一句,你可以使这个方法保持静态.

转载注明原文:java – 如何在GET请求中传递’/’字符? - 代码日志