0

メッセージヘッダーに基づいて動的 URL に http 要求を送信するには...

次のようにメッセージヘッダーからurl値を設定しようとしています:

 <int-http:outbound-gateway id="httpOutboundGateway" request-channel="fromMyQueue" 
    url="{outboundGatewayUrl}" reply-channel="nullChannel" 
    http-method="POST" expected-response-type="java.lang.String" charset="UTF-8">
<int-http:uri-variable name="outboundGatewayUrl" expression="headers['X-CUSTOM-HTTP-REQUEST-URL']" />

しかし、これは機能していません。
どうやら{outboundGatewayUrl}値はまったく置き換えられていません。これは、を実際の URL
に置き換えると機能します。{outboundGatewayUrl}

エラーメッセージ:

Caused by:
org.springframework.integration.MessageHandlingException: HTTP request execution failed for URI [{outboundGatewayUrl}]...

Caused by:<br> java.lang.IllegalArgumentException: URI is not absolute
    at java.net.URI.toURL(URI.java:1080)
    at org.springframework.http.client.SimpleClientHttpRequestFactory.createRequest(SimpleClientHttpRequestFactory.java:109)

ここで何が欠けていますか?

4

2 に答える 2

0

メッセージにヘッダー X-CUSTOM-HTTP-REQUEST-URL が存在しないようです。

式が null を返す場合 (つまり、ヘッダーが存在しない場合) は、そのエラー (URI は絶対ではありません) が発生します。

テストを実行したところ、適切なヘッダーで問題なく動作しました。ヘッダーが正しいと思われる場合は、問題を分析する必要があります。たとえば、最初にリテラル式を使用して...

<int-http:uri-variable name="outboundGatewayUrl" expression="'http://foo/bar'" />

エラーメッセージは、おそらく誤解を招く可能性があります。

Caused by:
org.springframework.integration.MessageHandlingException: HTTP request execution failed    for URI [{outboundGatewayUrl}]...

URLが展開されていないことを意味するためです。問題は、展開が RestTemplate 内で行われ、アダプターがそれにアクセスできないことです。

于 2012-11-09T13:38:05.210 に答える
0

$あなたの前にサインが欠けていると思います。{outboundGatewayUrl}その結果、SEL によって拡張されていません。これは、エラー メッセージにも示されています。

于 2012-11-09T12:00:28.483 に答える