繁体   English   中英

无法在Restlet Web服务的http响应标头中设置状态原因

[英]Unable to set status reason in http response header in Restlet Web service

我正在使用restlet框架制作REST Web服务。 我正在使用org.restlet 2.3.1 jar

我必须自定义错误响应标头。 根据具体问题,我必须在响应头中显示响应状态代码和状态原因。 为此,我制作了一个扩展StatusService并覆盖toStatus方法的类。 我检查了throwable,并相应地设置了状态。 请参考下面的示例代码。

@Override
public Status toStatus(Throwable throwable, Request request,
        Response response) {
    if (throwable != null) {
        return new Status(500,throwable, "DD","DD");
    }

    return super.toStatus(throwable, request, response);
}

因此,只要从restlet代码抛出异常,就会在此处捕获该异常并返回错误响应。 错误响应的正确状态码为500,但状态原因不正确。 而不是DD,它显示内部服务器错误。

HTTP / 1.1 500内部服务器错误

是否有一些但我正在使用的restlet框架版本。 请帮忙。

我认为您无法更改预定义HTTP状态代码的原因短语。 它们由HTTP规范本身定义...

如果要向客户端提供其他提示,则应使用响应有效负载并覆盖状态服务的toRepresentation方法。

以下链接提供了有关如何执行此操作的更多详细信息: https : //templth.wordpress.com/2015/02/27/exception-handling-with-restlet/

编辑

根据要求,您还可以在自定义响应标头中发送有关错误消息的一些提示,如下所述:

@Override
public Status toStatus(Throwable throwable, Resource resource) {
    Status status = Status.SERVER_ERROR_INTERNAL;

    Response response = resource.getResponse();

    Series<Header> responseHeaders = response.getHeaders();
    responseHeaders.add(new Header(
                 "Some-Header", "my custom message"));

    return status;

}

希望对您有帮助,蒂埃里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM