【问题标题】:java - JsonMessage is ok in server side but returns error 500 to clientjava - JsonMessage 在服务器端正常,但向客户端返回错误 500
【发布时间】:2014-07-07 12:54:54
【问题描述】:

我执行 ajax 调用以获取项目列表,但它返回 HTTP 错误 500。 我在服务器中对其进行了跟踪,并且地图已正确填充。不抛出异常。

@ResponseBody
@RequestMapping(value = "some/path", method = RequestMethod.POST )
public JsonMessage getlist(@RequestParam(value = "id") Long id){
    MyObject myobject = myObjectManager.get(id);

    Map map =  new HashMap<>();
    map.put("shits",lottery.getMultipleRewards());

    return JsonMessage.Success(map);
}

有什么想法吗?

(如果地图是空的,或者我在其上设置了一些静态的东西,比如字符串,那么它就可以工作)。

【问题讨论】:

  • 服务器日志文件中有错误信息吗?
  • 如果绝对没有抛出异常但您仍然收到 HTTP 500 响应,我会感到惊讶。您是否检查了所有服务器日志文件?
  • 我现在只是反复检查了日志,没有任何异常。

标签: java json spring


【解决方案1】:

当客户端未包含正确的 Accept: application/json 标头或服务器未包含 Content-Type: application/json 时,我已经看到这种情况发生在特别苛刻的实现中。

由于错误发生在您的代码之外,因此日志记录可能会以意外的方式/位置生成,并且您可能已经抑制了该特定的记录器。

我能想到的另一件事是,您可能正在通过另一台服务器代理请求。在这种情况下,处理请求的服务器可以生成正确的响应,但代理会出于某种原因抛出错误。

【讨论】:

  • 当然是所有假设。将有助于发布整个请求/回复。
【解决方案2】:
  1. 尝试返回一个字符串
  2. 如果可行,请尝试最简单的对象(带有 xml 根
  3. 如果可行,请尝试返回没有根的单个对象。
  4. 如果可行,请尝试字符串映射
  5. 检查所有记录器是否设置正确。 您的配置和使用的技术可能有助于诊断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-27
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    相关资源
    最近更新 更多