骆驼:如何检查响应http响应

Surasin Tancharoen

我对骆驼很陌生。我一直在尝试将数据(文件中的Json)提交到Web服务。这是我的代码:

    public static void main(String args[]) throws Exception {
        // create CamelContext
        CamelContext context = new DefaultCamelContext();

        // add our route to the CamelContext
        context.addRoutes(new RouteBuilder() {
            @Override
            public void configure() {
                from("file:data/inbox?noop=true")
                    .marshal()
                    .string()
                    .setHeader(Exchange.CONTENT_TYPE,constant("application/json"))
                    .to("http://www.a-service.com");
            }
        });

        // start the route and let it do its work
        context.start();
        Thread.sleep(10000);

        // stop the CamelContext
        context.stop();
    }

然后,Web服务将使用Json响应,该响应可以为{result:OK}或{result:FAIL}

现在,如果响应的responseCode为200,则Camel将视为成功。

我的问题是,如何对响应的JSon进行验证,以便如果失败,则Camel不应该认为成功?

解决方案信用@Namphibian:

通过添加处理器和末尾。此代码已经过测试:

    from("file:data/inbox?noop=true")
        .marshal()
        .string("UTF-8")
        .setHeader(Exchange.CONTENT_TYPE,constant("application/json"))
    .to("http://monrif-test.userspike.com/monrif/rss/monrif_-all-global")
        .process(new Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                Message in = exchange.getIn();
                String msg = in.getBody(String.class);
                System.out.println("Response: " + msg);
                if(msg.contains("OK")){
                    // go to party
                }else{
                    throw new Exception("test exception");
                }
            }
        });
南皮比

您可以使用两种广泛的策略来实现这一目标。

基于处理器:

在路由末尾添加一个处理器。在此处理器中,检查Web服务是否以true或false值进行响应。

处理器看起来像这样:

    package com.example;

    import java.util.Map;

    import org.apache.camel.Body;
    import org.apache.camel.Exchange;
    import org.apache.camel.Handler;
    import org.apache.camel.Headers;
    import org.apache.camel.Message;

    public class GeneralProcessor {
        @Handler

        public void PrepapreErrorImportReport
        (

                @Headers Map hdr
                , Exchange exch
        )
        {

            //todo: Get the message as a string;

            Message in = exch.getIn();
            String msg = (String)in.getBody();
            // Now check if body contains failed or ok.
            if(msg.contains("OK")){
                //todo: go party the message was OK
            }
            else{
               //todo: Oh Oh! Houston we have a problem
            }


        }

    }

然后,您可以修改路由以使用此处理器。

简单表达语言

这是一种方法,另一种方法是使用简单表达语言。请参阅以下示例,了解如何使用它。

 from("file:data/inbox?noop=true")
                .marshal()
                .string()
                .setHeader(Exchange.CONTENT_TYPE,constant("application/json"))
                .to("http://www.a-service.com")
                .choice()
                .when(simple("${body} contains 'OK'")).to("activemq:okqueue")
                .otherwise().to("activemq:queue:other");

注意simple("${body} contains 'OK'")这段代码。那就是简单的力量。

两种方法都有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查HTTP响应

来自分类Dev

从骆驼路线发送响应

来自分类Dev

如何返回Http响应?

来自分类Dev

如何获取HTTP 404响应的响应内容

来自分类Dev

如何检查Pac脚本的响应

来自分类Dev

如何同时检查多个响应

来自分类Dev

如何在同步(双向)骆驼路线中响应多个消息?

来自分类Dev

如何使用骆驼将Web服务响应写入文件?

来自分类Dev

骆驼响应消息上的TimeToLive

来自分类Dev

得到骆驼之路的休息响应

来自分类Dev

使用 ftl 的骆驼休息响应

来自分类Dev

VB中的HTTP响应代码检查器?

来自分类Dev

如何保存http响应的“块”?

来自分类Dev

如何对 HTTP 响应进行 groupBy?

来自分类Dev

如何获得http请求的响应

来自分类Dev

在进行中,如何检查写入http.ResponseWriter的http响应?

来自分类Dev

发送HTTP响应后如何记录HTTP请求/响应信息?

来自分类Dev

RestAssured:如何检查json数组响应的长度?

来自分类Dev

如何检查网站是否使用python响应?

来自分类Dev

我如何从列表中检查响应

来自分类Dev

如何检查输入是否清除(响应redux)

来自分类Dev

如何检查Ajax响应的错误列表

来自分类Dev

在AngularJS中,如何在$ http的所有响应上应用检查功能?

来自分类Dev

如何为http请求编写测试以检查响应的返回数据?

来自分类Dev

python,当http响应为None时,如何获取响应代码

来自分类Dev

如何使用 HTTP 响应状态代码配置 API 响应缓存?

来自分类Dev

捕获Apache骆驼路线CXF Web响应

来自分类Dev

骆驼RabbitMQ请求响应模式示例

来自分类Dev

响应http响应正文的编码