返回400 Bad Request with的Jersey服务必须为Range中的'to'索引指定非空值

Ste*_*ram 2 java jersey

我有一个Jersey REST服务,它调用其他几个REST服务并将它们的返回结合起来形成一个新的返回.我的单元测试通过了,但是在集成中我收到400 Bad Request并且无法弄清楚谁回来了.Jersey会解析输入并返回400吗?

@GET
@Path("/existing/{name}")
@Produces( MediaType.APPLICATION_JSON )
def namedFriction( @PathParam("name") String name, @Context HttpServletRequest request ) {
  Cookie ssoToken = HTTPUtils.getSSOCookie(request)
  def results = frictionBuilderService.checkCatalogForName(name, ssoToken)
  def requestUrl = HttpUtil.getBaseContextUrl( request )
  if ( results != null ) return frictionBuilderService.formatFriction(results, requestUrl)
  throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND).build() )
 }
Run Code Online (Sandbox Code Playgroud)

Ste*_*ram 7

5个小时后,我找到了答案.我在找错了地方.事实证明,Jersey响应处理程序将运行时异常转换为400 Bad Request.当问题是我自己的服务从循环中抛出IllegalArgumentException时,我专注于其他服务.

在您的服务impl周围放置一个try catch(Exception e)并快速找到问题.返回此错误时,Jersey会剥离堆栈跟踪,它可能不是来自远程服务,可能是您自己的代码.

放在这里为其他任何受折磨的人做后代.我不知道还有什么要注意的.