当前位置: 首页 > 知识库问答 >
问题:

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

赫连睿
2023-03-14

我正在使用restlet框架制作REST web服务。我正在使用组织。restlet 2.3.1 jar

我必须自定义错误响应头。根据具体问题,我必须在响应标题中显示响应状态代码和状态原因。为此,我创建了一个扩展StatusService并重写toStatus方法的类。我检查可丢弃项并相应地设置状态。请参阅下面的示例代码

@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框架版本。请帮助。

共有1个答案

陶瀚玥
2023-03-14

我认为您不能更改预定义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;

}

希望对你有帮助,蒂埃里

 类似资料:
  • 我目前正在尝试调用Salesforce中的亚马逊产品零售Web服务。 正如我在Salesforce中从WSDL生成Apex代码时得到WSDL解析错误中提到的 我最初无法生成apex存根类,但我遵循了@Ballinger建议的方法,创建了apex类。我编写了一个apex类来使用该存根并设置请求参数。我写的类如下 正如你所看到的,我是Salesforce Apex的新手。我按照步骤 http://ww

  • 我正在尝试创建一个简单的没有任何数据库的NodeJS和Express的REST API。我已经将所有数据存储在JSON文件中。数据是对象数组的形式。 我有像fund-name/: portId这样的路径。 所以我这样做: 当我点击网址 时,我收到以下错误: 错误[ERR_HTTP_HEADERS_SENT]:在ServerResponse.header(/home/username/Desktop

  • 问题内容: 有什么方法可以获取原始响应的HTTP标头? 该方法对我不起作用,因为服务器吐出了多个“ Set-Cookie”,其中一些丢失了。 问题答案: 该方法对我不起作用 您是在的情况下问这个的吗?不可以,无法使用原始HTTP响应标头。您需要退回到低级的Socket编程。这是一个SSCCE,只需复制“ 粘贴 ”即可运行它。 为了避免每个尝试此代码片段的人都使SO过载,输出如下所示: 要了解有关以

  • 首先,我为拼写错误道歉,我是巴西人 我访问了下面的问题,但它没有帮助我解决问题 ERR_HTTP_HEADERS_SENT:将标头发送到客户端后,无法设置标头 我有一个方法,我从路由调用在第一个请求,它按预期工作 但在下一个命令中,它返回以下错误 我的代码 我尝试使用失败 这个方法返回一个从excel电子表格中读取的对象 服务器我的代码出错

  • 我的要求是在正文中发送错误超文本传输协议状态和错误消息。在流错误的情况下,我需要在状态字段中传递超文本传输协议代码。我可以配置这个超文本传输协议监听器,但不知道如何设置它进入有效载荷。请指导一下。我在等MEL收到400个坏请求

  • My API Gateway/Lambda安装程序返回HTTP响应头:Lambda使用回调函数作为JSON的一部分返回值,集成响应将其映射到HTTP头(使用) 使用此解决方案,值将在正文和标题中发回。 如何从Lambda响应映射头而不复制响应体中的值?