簡體   English   中英

RestTemplate 使用括號和斜線獲取請求

[英]RestTemplate Get request with Brackets and Slash

I am using below URL with RestTemplate to get data http://localhost:8161/console/jolokia/exec/org.apache.activemq.artemis:broker="0.0.0.0"/listQueues/{"field":"", "操作":"","值":""}/1/100

我的代碼如下所示

HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setBasicAuth(user, pass);
HttpEntity<String> httpEntity = new HttpEntity<>(httpHeaders);
            
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(MediaType.parseMediaTypes(Arrays.asList("text/plain;charset=utf-8", "application/json")));
restTemplate.getMessageConverters().add(0, converter);

ResponseEntity<Object> response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, Object.class);

從上面的代碼我得到以下錯誤

{request={mbean=org.apache.activemq.artemis:broker="0.0.0.0", arguments=[%7B"field":"","operation":"","value":""%7D, 1, 100], type=exec, operation=listQueues}, error_type=javax.json.stream.JsonParsingException, error=javax.json.stream.JsonParsingException : Unexpected character '%' (Codepoint: 37) on [lineNumber=1, columnNumber=2, streamOffset=1]. Reason is [[Expected structural character or digit or 't' or 'n' or 'f' or '-']], status=500}

有什么方法可以通過 RestTempate 在 URL 中使用 / 傳遞 {}?

我嘗試了以下解決方案,但它不起作用。

https://stackoverflow.com/questions/43917408/resttemplate-request-with-braces

https://stackoverflow.com/questions/41267993/how-to-properly-escape-a-url-to-be-used-in-resttemplate-that-has-flower-brackets?noredirect=1&lq=1

任何人都可以在這方面幫助我。

經過長時間的搜索后,我找到了以下解決方案,它對我有用

URI uri = UriComponentsBuilder.fromUriString(url).build().encode().toUri();
ResponseEntity<Object> response = restTemplate.exchange(uri, HttpMethod.GET, httpEntity, Object.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM