![](/img/trans.png)
[英]How to set HTTP Status code reason with Apache Camel REST DSL (Servlet/Restlet)
[英]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.