URL编码错误
问题描述:
我从Apache Camel调用一个URL。
URL编码错误
我设置标题 “Exchange.HTTP_URI” 为http://localhost:8080/rest/api/2/search?jql=Name~ABC
但它给错误说
调用 http://localhost:8080/rest/api/2/search?jql=Name<b>%257E
ABC
为什么〜被转换成%257E
%7E是〜的代码 和25%对%
当我设置“Exchange.HTTP_QUERY”,它运行的头代码,但是当我看到,
它实际上只是http://localhost:8080/rest/api/2/search
运行,并返回响应。
答
下面的代码片段工作得很好:
public class HttpQueryTest
{
public static void main(String[] args) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start")
.setHeader(Exchange.HTTP_URI, simple("http://google.com?q=Name~ABC"))
.to("http://localhost/noSuchUrl").to("log:OUT");
}
});
camelContext.start();
camelContext.createProducerTemplate().sendBody("direct:start","start");
TimeUnit.SECONDS.sleep(5);
}
}
正如我在日志中看到:
12:59:11.230 [main] DEBUG o.a.c.component.http.HttpProducer - Executing http GET method: http://google.com?q=Name~ABC
12:59:11.650 [main] DEBUG o.a.c.component.http.HttpProducer - Http responseCode: 200
正如你可以看到它设置使用Exchange.HTTP_URI头值的目标URL。然后,它会使用与您的参数类似的参数创建Google查询。
您能否提供演示您的问题的片段,以便我可以重现它?