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 に答える