当我使用httpGet方法时,spring-integration-dsl-groovy-http返回null

时间:2015-06-08 20:27:50

标签: spring groovy spring-integration

我使用spring integration 4.1.4和spring integration dsl groovy 1.1.0

我包含了spring integration core,http依赖。

当我执行spring integration dsl groovy http示例时,它在控制台中抛出null值。我不确定我错过了什么。

这是我的代码看起来像

IntegrationBuilder builder = new IntegrationBuilder("http");

def flow = builder.messageFlow {
        transform {"http://www.google.com/finance/info?q=$it"}          
        httpGet(url:{"${it}"},responseType:String)
    }

Object result = flow.sendAndReceive("vmw");

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:1)

这已在主分支上修复。同时,一个简单的解决方法是

url:{"http://www.google.com/finance/info?q=$it".toString()}

url:{"http://www.google.com/finance/info?q=$it" as String}

答案 1 :(得分:0)

什么版本的DSL?您需要从master构建以与Spring Integration 4.1.x一起使用。

我会警告你,多年来Groovy DSL很少受到关注;从来没有在社区中获得任何牵引力。

Java DSL是首选;它得到了积极的维护和增强。

答案 2 :(得分:0)

我刚刚测试过您的案例并且没有看到任何null value,但还有其他错误:

Caused by: java.lang.IllegalStateException: 'uriExpression' evaluation must result in a 'String' or 'URI' instance, not: class org.codehaus.groovy.runtime.GStringImpl

所以,这真的是一个错误,随时可以提出JIRA票,并会尽快照顾。

另一方面,请允许我向您提出这样的问题:当我们已经Java DSL时,有什么理由可以使用这种不稳定,无需维护的东西。从另一方面,我们可以使用常规Spring Groovy Configuration支持中的任何Spring Integration命名空间,例如:

beans {
    xmlns([si: 'http://www.springframework.org/schema/integration'])

    def headers = environment.getProperty('headers')
    def parser = new JsonSlurper()
    def result = parser.parseText(headers)

    si.channel(id:'input')
    si.channel(id:'output')

    si.'header-enricher'('input-channel':'input','output-channel':'output') {
        result.each {k,v->
            si.'header'(name:k,expression:v)
        }
    }
}