以下代码尝试设置Camel路由以接收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)
(根据http://camel.apache.org/jetty.html上的示例),然后我可以看到发布的消息。
答案 0 :(得分:0)
我自己解决了 - 对我的修正是改变路线:
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之间的某些代码,除非明确定义字母表,否则行为似乎已更改为默认情况下为byte []。由于我发布了一个文本/简单的正文,它没有用。