使用Spring RESTTemplate时停止模板扩展

使用Spring RESTTemplate时停止模板扩展,spring,rest,uritemplate,Spring,Rest,Uritemplate,我使用SpringRESTTemplate调用ApacheSolr索引。我手动形成一个请求字符串,不提供任何有意的{variable_name}模板扩展变量。查询的一部分是术语{!lucene q.op=OR}。不幸的是,这将由URITemplate引擎作为restTemplate.getForObject调用的一部分进行处理 理想情况下,我希望停止此处理。有没有办法转义{}字符,使URITemplate不处理它们?我已经尝试对字符进行编码,但RestTemplate假定为非编码字符串,因此它们

我使用SpringRESTTemplate调用ApacheSolr索引。我手动形成一个请求字符串,不提供任何有意的{variable_name}模板扩展变量。查询的一部分是术语{!lucene q.op=OR}。不幸的是,这将由URITemplate引擎作为restTemplate.getForObject调用的一部分进行处理

理想情况下,我希望停止此处理。有没有办法转义{}字符,使URITemplate不处理它们?我已经尝试对字符进行编码,但RestTemplate假定为非编码字符串,因此它们被编码两次,并在后端导致400:Bad请求

示例URL:

{laugene q、 op=或}se_genbank轨迹:* se_gb_创建:*se_gb_更新:* se_克隆_名称:* se_样本组织:*&facet=true&facet.limit=3&facet.mincount=1&facet.field=se_样本组织与facet.field=se_样本组织与facet.field=se_样本组织与facet.field=se_样本组织与facet.field=se_样本组织与facet.field=se_酸与facet.field=ssam样本组织与georegion&start=0&rows=10


我找到了一种解决方法,可以使用模板来扩展一个变量,其中包含有问题的
{!lucene q.op=OR}

restTemplate.getForObject(solrServer+"select?{query}" , String.class, requestString );

我找到了一种解决方法,可以使用模板来扩展一个变量,其中包含有问题的
{!lucene q.op=OR}

restTemplate.getForObject(solrServer+"select?{query}" , String.class, requestString );

这里的问题是,您使用的是
restemplate
,而不是为它设计的。您给出的示例URL不是REST样式的URL,它只是大量的查询参数,使用了REST方案中找不到的编码字符,因此很难进行不必要的替换。

这里的问题是,您使用的是
RestTemplate
,而不是为它设计的。您给出的示例URL不是REST样式的URL,它只是大量的查询参数,使用REST方案中找不到的编码字符,因此很难进行不必要的替换。

使用接受URI的重载方法如何

使用接受URI的重载方法怎么样

同意,我根据你的反馈改变了我的方法同意,我根据你的反馈改变了我的方法