0

次のコードは、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();
    }
}

これは最初は機能しているように見えますが (SMS が送信されます)、メッセージはすべて空です。

次のコマンドを使用してテストします。

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の例のように)、投稿されたメッセージを見ることができます。

4

1 に答える 1

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[] を期待するように動作が変更されているようです。テキスト/プレーンボディを投稿したため、機能しませんでした。

于 2013-05-20T05:41:32.607 に答える