spring-integration-dsl-groovy-http return null 当我使用 httpGet 方法时
spring-integration-dsl-groovy-http return null when i use httpGet method
我使用 spring 集成 4.1.4 和 spring 集成 dsl groovy 1.1.0
我包括 spring 集成核心,http 依赖。
当我执行 spring 集成 dsl groovy http 示例时,它在控制台中抛出空值。我不确定我错过了什么。
这是我的代码
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");
有人可以帮我吗?
什么版本的 DSL?您需要从 master 构建才能与 Spring 集成 4.1.x.
一起使用
我要警告你,groovy DSL 多年来很少受到关注;它从未真正在社区中获得任何吸引力。
Java DSL者优先;它得到积极维护和增强。
我刚刚测试了你的情况,没有发现任何问题 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 配置支持的任何 Spring 集成命名空间,例如:
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)
}
}
}
这已在 master 分支上修复。同时,一个简单的解决方法是
url:{"http://www.google.com/finance/info?q=$it".toString()}
或
url:{"http://www.google.com/finance/info?q=$it" as String}
我使用 spring 集成 4.1.4 和 spring 集成 dsl groovy 1.1.0
我包括 spring 集成核心,http 依赖。
当我执行 spring 集成 dsl groovy http 示例时,它在控制台中抛出空值。我不确定我错过了什么。
这是我的代码
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");
有人可以帮我吗?
什么版本的 DSL?您需要从 master 构建才能与 Spring 集成 4.1.x.
一起使用我要警告你,groovy DSL 多年来很少受到关注;它从未真正在社区中获得任何吸引力。
Java DSL者优先;它得到积极维护和增强。
我刚刚测试了你的情况,没有发现任何问题 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 配置支持的任何 Spring 集成命名空间,例如:
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)
}
}
}
这已在 master 分支上修复。同时,一个简单的解决方法是
url:{"http://www.google.com/finance/info?q=$it".toString()}
或
url:{"http://www.google.com/finance/info?q=$it" as String}