Netty解码器结果 - 为错误请求发送适当的响应代码

时间:2014-09-16 06:43:09

标签: java http exception-handling netty http-status-codes

我正在Netty Github查看HttpStaticFileServerHandler示例。在messageRecieved上,如果解码器结果不成功,则抛出错误请求。所以响应代码为400.我想在请求uri太长时发送414。

我已经尝试了,

Throwable cause = requestMessage.getDecoderResult().cause();
String message = cause != null ? cause.getMessage() : "";
HttpResponseStatus responseStatus = cause instanceof TooLongFrameException?
      HttpResponseStatus.REQUEST_URI_TOO_LONG : HttpResponseStatus.BAD_REQUEST;

有更好的方法吗?我相信其他情况也会抛出TooLongFrameException。所以在那些情况下可能不对。解析错误消息也不好看。想知道这是否可以以更好/更优雅的方式完成。

1 个答案:

答案 0 :(得分:0)

该处理程序中的一点是代码块:

    final String uri = request.uri();
    final String path = sanitizeUri(uri);
    if (path == null) {
        sendError(ctx, FORBIDDEN);
        return;
    }

你能用uri.length()检查和相关的sendError来使用这个块吗?