2012-05-16 108 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查詢。

您能否提供演示您的問題的片段,以便我可以重現它?