【问题标题】:How to convert bytes body to string using http header charset definition in camel RouteBuilder?如何使用骆驼RouteBuilder中的http标头字符集定义将字节主体转换为字符串?
【发布时间】:2015-11-23 18:52:52
【问题描述】:

在骆驼实例中,我想使用 HTTP 标头的指定编码将休息消息的正文转换为字符串。

到目前为止我想出的路由定义如下所示:

    from("cxfrs:bean:rsServer")
    .convertBodyTo(String.class, header(Exchange.HTTP_CHARACTER_ENCODING).evaluate(refToCurrentExchange, String.class))
    .inOnly("activemq:jms:foo");

但是我不知道如何评估Exchange.HTTP_CHARACTER_ENCODING 标头以便将其值用作convertBodyTo 的目标字符集。

如果正文未转换,则发送到 jms 队列的消息将是 jms 字节消息,但我希望它是 jms 文本消息。

如何将Exchange.HTTP_CHARACTER_ENCODING 值用作convertBodyTo 的参数?

【问题讨论】:

    标签: java apache-camel


    【解决方案1】:

    我实现了一个新的处理器来完成这项工作:

    public static final class ConvertBodyToStringProcessor implements Processor {
        @Override
        public void process(Exchange exchange) throws Exception { // NOPMD
            new ConvertBodyProcessor(String.class, (String) new HeaderExpression(Exchange.HTTP_CHARACTER_ENCODING).evaluate(exchange)).process(exchange);
        }
    }
    

    现在路由的定义是这样的:

    from("cxfrs:bean:rsServer")
    .process(new ConvertBodyToStringProcessor())
    .inOnly("activemq:jms:foo");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      相关资源
      最近更新 更多