Java 如何使用Camel桥接HTTP和SMPP?

Java 如何使用Camel桥接HTTP和SMPP?,java,http,apache-camel,smpp,Java,Http,Apache Camel,Smpp,以下代码尝试设置一个驼峰路由来接收HTTP POST,并通过SMPP将其作为SMS消息发送: import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.impl.DefaultCamelContext; public class SMSA { public static void main(String[] args) throw

以下代码尝试设置一个驼峰路由来接收HTTP POST,并通过SMPP将其作为SMS消息发送:

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;

public class SMSA {
    public static void main(String[] args) throws Exception {
        CamelContext context = new DefaultCamelContext();
        RouteBuilder builder = new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                errorHandler(loggingErrorHandler());

                from("jetty:http://localhost:9993").
                    setHeader("CamelSmppDestAddr", header("deliveryAddress")).
                    to("smpp://smppclient1@localhost:2775?password=password&sourceAddr=1234")
                ;
            }
        };
        builder.addRoutesToCamelContext(context);
        context.start();
    }
}
这在一开始似乎是可行的(发送短信),但消息都是空的

我使用以下命令进行测试:

curl -X POST -d "Hello World!" --header "Content-Type:text/plain" "http://localhost:9993?deliveryAddress=1818"
如果我添加自定义处理器并调用

exchange.getIn().getBody(String.class)

(根据上的示例),然后我可以看到发布的消息。

我自己解决了这个问题-解决方法是将路由更改为:

from("jetty:http://localhost:9993").
    setHeader("CamelSmppDestAddr", header("deliveryAddress")).
    setHeader("CamelSmppAlphabet", constant(4)).
    to("smpp://smppclient1@localhost:2775?password=password&sourceAddr=1234")
;
查看Camel 2.9.0和2.11.0之间的一些代码,行为似乎已经改变,默认情况下需要一个字节[],除非明确定义了字母表。因为我发布了一个文本/普通正文,所以它不起作用