2016-04-23 58 views
-1

你們指出之前,我已經嘗試過這種解決方案發送JSON響應HTTP狀態與自定義對象

Serialize javax.ws.rs Entity to json

,並沒有奏效。這裏是我在嘗試發送響應:

return Response.status(fe.getHttpError()) 
      .entity(fe) 
      .type(MediaType.APPLICATION_JSON) 
      .build(); 

哪裏fe是類型的對象FirstException

public class FlightException extends Exception { 
    private int httpError; 
    private int errorCode; 
    private String message; 

    public FirstException(int httpError, int errorCode, String message) { 
     this.httpError = httpError; 
     this.errorCode = errorCode; 
     this.message = message; 
    } 

    public int getHttpError() { 
     return httpError; 
    } 

    @Override 
    public String getMessage() { 
     return message; 
    } 
} 

我的行家已經有了下面的條目

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.19</version> 
</dependency> 

所以,問題是那我該如何發送一個帶有HTTP錯誤代碼的Response對象,以及JSON中的自定義實體?

作爲一個方面說明,如果我改變這個條目從我剛纔發佈的鏈接Glassfish的條目,我得到在啓動時出現以下錯誤:

java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; 
    javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) 
    com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:662) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

回答

0

一般的狀態代碼將在響應頭可用,我認爲你已經知道這一點。如果由於某種原因,您需要在響應對象中發送http狀態碼,那麼您必須創建一個自定義響應包裝對象,該對象可以包含錯誤以及響應數據,例如,您可以執行類似,

public class ApiResponse implements Serializable { 

    private List<FirstException> errors; 

    private Map<String, Object> data; 
} 

那麼當你可以返回喜歡

{ 
"errors": [ 
    { 
    "httpError": 401, 
    "errorCode": 401, 
    "message": "unauthroized request" 
    } 
] 
} 

和成功響應類似故障響應,

{ 
"data": { 
    "user": { 
    "name": "test" 
    } 
} 
} 

這種格式也與標準的json api格式對齊,結帳http://jsonapi.org/

+0

這並沒有幫助。我仍然有同樣的問題 –

+0

然後你可以重新說明你需要什麼。你想發送http狀態碼作爲迴應,我相信這一點,請解釋你需要什麼或者你正面臨什麼問題 –

+0

正如我前面提到的那樣,它不會返回帶有http狀態的json。這給了我早些時候的同樣的問題。 –