如何在GET请求中传递'/'字符?

时间:2017-11-06 13:11:54

标签: java spring-restcontroller

我有一个api:

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

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

我正在使用Spring Rest Controller来创建api。 当使用以上参数进行请求时,它会显示 Request Not Found错误。

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

以下是我尝试的代码。

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

现在我使用以下参数

创建一个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

1 个答案:

答案 0 :(得分:2)

您的编码方法已损坏:

缺少return声明。

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

顺便说一句,你可以将这个方法设为静态。