【问题标题】:Grails Rest Client Builder POST Return Error/ExceptionGrails Rest Client Builder POST 返回错误/异常
【发布时间】: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


【解决方案1】:

感谢大家的回复。我最终将我的 Grails 应用程序从 2.2.3 升级到了 2.3.5,现在代码(上图)运行良好。 500 错误完全消失了。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
相关资源
最近更新 更多