【发布时间】:2017-08-11 16:21:54
【问题描述】:
我必须使用 GET 请求的查询参数从 URL 读取 JSON 值。 我在 Spring Boot 项目中使用了最新的 Tomcat。
@RequestMapping(
value = "/values",
method = RequestMethod.GET,
headers = HttpHeaders.ACCEPT + "=" + MediaType.APPLICATION_JSON_VALUE,
produces = "application/json")
public ResponseEntity<String> myMethod(
@RequestParam(value="key") String jsonRequestString) {
//parse JSONString
//--
}
对 URL 的 GET 请求
网址:- http://localhost:port/values?key={"org":"AA","points":[{"name":"xy","Measures":"343"}]}]
投掷 java.lang.IllegalArgumentException:在请求目标中发现无效字符。有效字符在 RFC 7230 和 RFC 3986 中定义
编辑:- 以原始形式发送 JSON 导致我无处可去,因此工作方法是以编码形式发送 JSON。
【问题讨论】:
-
正如错误所说,这不是一个有效的 URL。您需要在发送 JSON 内容 之前 对其进行 URL 转义,或者(更好)使用 POST 并将 JSON 放入请求正文中。
-
我无法对 JSON 进行编码。
-
我无法对请求参数或请求类型进行任何更改。
-
我需要以某种方式接受这些价值观。对此有任何建议
-
这个问题可能会有所帮助:stackoverflow.com/questions/41053653/… 简而言之,如果客户端没有转义查询参数,您可能别无选择,只能降级到较旧的 Tomcat 版本。
标签: java spring rest spring-mvc spring-boot