2012-05-16 67 views
1

我从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运行,并返回响应。

回答

1

下面的代码片段工作得很好:

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查询。

您能否提供演示您的问题的片段,以便我可以重现它?