我有一个api:
http://localhost:8080/mylocalserver/#/reports/{parameter1}/{parameter2}
现在第一个参数是parameter1 =“12345 / EF” 第二个参数是parameter2 =“Text”
我正在使用Spring Rest Controller来创建api。
当使用以上参数进行请求时,它会显示
Request Not Found
错误。
我尝试使用URLEncoder.encode
和UriUtils.encode(param, StandardCharsets.UTF_8.name())
对参数进行编码和解码,但仍然遇到相同的错误。
以下是我尝试的代码。
假设我从用户输入中获得了两个变量
parameter1
和parameter2
现在我使用以下参数
创建一个URLprivate 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
答案 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;
}
顺便说一句,你可以将这个方法设为静态。