首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >http:outbound gateway中url的动态填充

http:outbound gateway中url的动态填充
EN

Stack Overflow用户
提问于 2019-07-30 14:11:20
回答 1查看 126关注 0票数 0

http中url的动态填充:出站网关提供错误

试过以下代码

代码语言:javascript
复制
 <int:header-enricher input-channel="jmsInboundChannel_POST" output-channel="outbound_gateway_channel_POST">
        <int:header name="postURL" expression="payload.getUrl()"/>
        <int:header name="Accept-Language" value="en_GB"/>
        <int:header name="X-Source-CountryCode" value="GB"/>
        <int:header name="X-Source-Operator" value="Enterprise"/>
        <int:header name="X-Source-Division" value="OrderManagement"/>
        <int:header name="X-Source-System" value="${sapwebservices.http.header.source.system}"/>
        <int:header name="X-Source-Timestamp" expression="new java.text.SimpleDateFormat('yyyy-MM-dd HH:mm:ss').format(new java.util.Date())"/>
        <int:header name="Accept" value="application/json"/>
        <int:header name="Content-Type" value="application/json;charset=UTF-8"/>
    </int:header-enricher>

    <int:object-to-json-transformer input-channel="outbound_gateway_channel_POST"
            output-channel="create_order_outbound_gateway_with_json_POST"
            object-mapper="nonNullObjectMapper"/>
    <http:outbound-gateway
            mapped-request-headers="Accept*, Content-Type, X-*, HTTP_REQUEST_HEADERS"
            request-channel="create_order_outbound_gateway_with_json_POST"
            reply-channel="print_payload"
            url="${UrlVariable}"
            http-method="POST"
            expected-response-type="java.lang.String"
            charset="UTF-8"
            request-factory="httpRequestFactory">
        <http:uri-variable name="UrlVariable" expression="headers['postURL']"/>
    </http:outbound-gateway>

给错

代码语言:javascript
复制
org.springframework.beans.FatalBeanException: Context hybris Global Context Factory  couldn't  be created correctly due to, Invalid bean definition with name 'org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler#1' defined in null: Could not resolve placeholder 'UrlVariable' in string value "${UrlVariable}"

我正在使用HTTP-2.1 jar。

尝试为每个请求动态填充url。

@Gary,尝试了你的解决方案,得到了例外。

代码语言:javascript
复制
WARN  [org.springframework.jms.listener.DefaultMessageListenerContainer#0-6] [GatewayProxyFactoryBean$MethodInvocationGateway] failure occurred in gateway sendAndReceive
org.springframework.integration.MessageHandlingException: HTTP request execution failed for URI [{urlVariable}]
    at org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler.handleRequestMessage(HttpRequestExecutingMessageHandler.java:284)
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:97)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:114)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:101)
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:61)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:157)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:128)
    ......
    ......
    ......
    at org.springframework.jms.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:463)
    at org.springframework.jms.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:355)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1069)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1061)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:958)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated.
Make sure to release the connection before allocating another one.
    at org.apache.http.impl.conn.BasicClientConnectionManager.getConnection(BasicClientConnectionManager.java:162)
    at org.apache.http.impl.conn.BasicClientConnectionManager$1.getConnection(BasicClientConnectionManager.java:139)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:456)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    ... 86 more
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-30 18:01:57

url="${UrlVariable}"

删除$;这里的占位符只是{....}

在上下文初始化期间,只计算一次${...}占位符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57273736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档