ResponseEntity 结果=restTemplate.getForEntity(requestURL, String.class);
过滤器 =“{billid=%22P1yhABCnWJ7WhI%22}”;
ResponseEntity 结果=restTemplate.exchange(requestURL, HttpMethod.GET, request, String.class, filter);
两种方法都试过了,都没有用。
抛出此异常: java.lang.IllegalArgumentException:没有足够的变量值可用于扩展 'billid=%22P1yhABCnWJ7WhI%22'
当 URL 包含双引号 " 和大括号 { } 时,如何解决这种情况?
当您尝试发送带有 get 参数的 get 请求时,其中包含一些特殊符号,如 %、{、}、? 等,您必须对它们进行 UrlEncode,因为当服务器将 % 视为 eaxmple 时,他会将其识别为和前一个参数并等待另一个参数。请尝试对这些参数进行 UrlEncode。
这是一个示例,您可以使用UriComponentsBuilder
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
String baseUrl = "YOUR_API_URL";
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(baseUrl)
.queryParam("query","test.link.packets{filter}")
.queryParam("start","2023-08-10T01:02:03Z")
.queryParam("end","2023-08-26T01:02:03Z");
ResponseEntity<String> response = restTemplate.getForEntity(builder.toUriString(), String.class);