【发布时间】:2014-01-29 00:56:38
【问题描述】:
我一直在使用 grails 插件:'grails-rest-client-builder:2.0.1'
https://github.com/grails-plugins/grails-rest-client-builder/
当我将一些数据发布到 Web 服务时,我遇到了一个奇怪的问题,即 500 异常,即使 POST 确实运行成功。
Class
java.lang.NoClassDefFoundError
Message
org/springframework/util/StreamUtils
Around line 195 of PageFragmentCachingFilter.java
if (CollectionUtils.isEmpty(cacheOperations)) {
log.debug("No cacheable annotation found for {}:{} {}"
new Object[] { request.getMethod(), request.getRequestURI(), getContext() });
chain.doFilter(request, response);
return;
}
从 Web 服务返回的响应应如下所示:
{"id":"9999","key":"IX-2247","self":"https://jira.xxxx.com/rest/api/latest/issue/9999"}
再次,网络服务正确地获取了我传递给它的值,我通过检查我发布到的应用程序验证了这一点,我确实看到了我的期望。不仅如此,我还收到一封来自系统的电子邮件,我正在向其发布邮件,该电子邮件包含来自 Grails 应用程序的正确值。
这是我正在使用的 POST:
def rest = new grails.plugins.rest.client.RestBuilder()
def resp = rest.post("https://jira.xxxx.com/rest/api/latest/issue/"){
auth "Basic xxxx"
contentType "application/json"
json builder.toPrettyString()
}
我的假设是,问题可能在于rest-client-builder 对从 Web 服务返回的响应存在某种问题。
以前有没有人遇到过类似的情况,服务在哪里工作,但 Grails 会抛出 500 错误,即使是在成功的 POST 上?
如果我需要提供更多信息,请告诉我。
提前致谢!
【问题讨论】:
-
看起来是类版本不匹配。可能
org/springframework/util/StreamUtils在两个不同的插件中使用/导出。另外,从您的描述中也不是很清楚,问题是什么。错误 500 并不一定意味着您发送的数据没有到达。问题在于结果呈现 - 在服务器上,而不是在客户端 -
是的,@injecteer 是对的,500 将是服务器端。如果您使用“curl -X POST --data .....”从 SOAPUI 或命令行调用相同的内容,我希望也是 500。这并不意味着整个调用都失败了,如果您在服务器端看到您期望的结果,那么它会获取该调用,保存数据,然后在响应返回之前在下游某处出错。
标签: grails grails-plugin