Spring Rest Template Url包含复杂查询

时间:2015-07-23 08:54:37

标签: java spring rest url-encoding resttemplate

我想调用一个web服务,它接受url查询参数。 这是查询:

{PK} IN({{Select {o.name}  from {Student! as o} where {o.name} IN ({{Select {s.pk} 
 from {School as s} where {s.code}="school"}})}})

我使用this

对查询进行编码

我将编码后的查询放入网络服务网址:http://host?query=query_above_encoded

所以当这样做时(使用resttemplate调用Web服务):

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

我得到了这个例外:

  

org.springframework.web.client.HttpServerErrorException:500 Erreur Interne de Servlet

但是当我使用其他客户端应用程序(如Postman)调用相同的URL时,请获取响应。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

解决方案是在编码url后使用URI JAVA对象:

ResponseEntity<Model> response = restTemplate.exchange(
                    new URI(encodedUrl), HttpMethod.GET, request, Model.class);

希望这有助于其他人。