gpt4 book ai didi

activemq - URL 编码 Camel 交换体

转载 作者:行者123 更新时间:2023-11-30 23:54:26 25 4
gpt4 key购买 nike

我需要这个问题的帮助。

我正在使用 camel-http组件如图 here但我遇到了麻烦,因为我发送的 body 有未转义的&符号。这导致接收服务器上的查询字符串将帖子分成多个帖子参数。

我知道我可以在 java 中创建已编译的路由,但我必须使用 spring xml 方言,以便可以在配置文件中创建/更改新路由而无需重新编译。

因此,简而言之,我想使用 spring 方言对我的路由上的 ${body} 属性进行 URL 编码,如下面的(显然无效的)伪代码所示。

<setBody inheritErrorHandler="true" id="setBody2">
<simple>name=<urlencode>${body}</urlencode></simple>
</setBody>

最佳答案

好吧,我咬紧牙关。我创建了一个 java POJO

package com.wufoo.camel;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.apache.log4j.Logger;

public class PayloadEncoder {
public String getEncodedBody(String body) throws UnsupportedEncodingException {
Logger mylogger = Logger.getLogger("log4j.logger.org.apache.camel");
mylogger.info("Appending payload and URL Encoding");
String encodedBody = new StringBuffer()
.append("payload=")
.append(URLEncoder.encode(body, "UTF-8")).toString();
return encodedBody;
}
}

然后将其注入(inject)上下文
<bean id="payloadEncoder" class="com.wufoo.camel.PayloadEncoder" />

最后使用一个变换来编码 body
<transform>
<method bean="payloadEncoder" method="getEncodedBody"/>
</transform>

这样可行。如果有人能告诉我这种方法有什么问题,请告诉我。

关于activemq - URL 编码 Camel 交换体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com