我正在使用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框架版本。 请帮忙。
答案 0 :(得分:0)
我认为您无法更改预定义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;
}
希望它可以帮到你, 亨利