簡體   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