1

我正在调用来自 Apache Camel 的 URL。

我将标题“Exchange.HTTP_URI”设置为
http://localhost:8080/rest/api/2/search?jql=Name~ABC

但它给出了错误说
Invoking http://localhost:8080/rest/api/2/search?jql=Name<b>%257EABC

为什么~被转换为%257E
%7E 是 ~ 的代码
而 %25 是 % 的代码

当我设置标题 "Exchange.HTTP_QUERY" 时,它会运行,但是当我看到时,
它实际上只运行http://localhost:8080/rest/api/2/search并返回响应。

4

1 回答 1

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

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

于 2012-05-21T11:04:30.040 回答