我正在使用restlet框架製作REST Web服務。我正在使用org.restlet 2.3.1 jar無法在Restlet Web服務中的http響應頭中設置狀態原因
我必須自定義錯誤響應頭。根據具體問題,我必須在響應頭中顯示響應狀態代碼和狀態原因。 爲此我創建了一個擴展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代碼拋出正是在這裏捕獲並返回錯誤響應。錯誤響應具有正確的狀態代碼,但是狀態原因不正確。而不是DD它顯示內部服務器錯誤。
HTTP/1.1 500內部服務器錯誤
是有一些,但與我使用Restlet框架版本。 請幫忙。
是否有可能在任何其他http響應頭中發送錯誤消息。我知道可以通過覆蓋toRepresentation來將錯誤消息作爲響應主體發送。但我不想在http響應正文中顯示錯誤消息。我想在http頭中發送錯誤消息。 – kaka
是的,當然!我更新了我的答案,告訴你如何做到這一點...... –
我對蒂埃裏的答案有一些小小的評論。您只需調用「resource.getReponse()」方法即可訪問該響應。然後,只需調用「Response#getHeaders()」方法即可訪問頭文件。另外,我會說生成的原因短語似乎是由底層HTTP連接器處理的。內部連接器(基於JDK的HttpServer類)顯示「內部服務器錯誤」,Jetty生成「服務器錯誤」響應短語。 –