如何在URL中传递插入符号?

时间:2018-10-19 09:06:49

标签: java rest spring-mvc spring-boot url

我需要像URL中的参数值一样传递^。例如:

http://localhost:8080/myapp/books?filter=^

但是有一个error:java.lang.IllegalArgumentException:在请求目标中发现无效字符。有效字符在RFC 7230和RFC 3986中定义。我已经阅读过,需要进行编码。有这样的事情,但仍然无法正常工作。我也尝试添加     System.setProperty(“ tomcat.util.http.parser.HttpParser.requestTargetAllow” ^“);

但是对于^并没有帮助。

我有一个控制器:

@RequestMapping("/books")
public String getBooks(@RequestParam(value = "filter") String filter, Model model)
        throws UnsupportedEncodingException {

        String par = URLEncoder.encode(nameFilter,"UTF-8");
    List<Books> books = (List<Books>) booksService.findAll(filter);
    model.addAttribute("books", books);
    return "getBooks";
}

}

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在对REST Api发出请求之前,请尝试对URI进行编码

例如,当您使用JS时,请阅读以下内容: https://www.w3schools.com/jsref/jsref_encodeURI.asp 在Java上:Java URL encoding: URLEncoder vs. URI

祝你好运!