我正在嘗試爲JAX-RS編寫一個定製的ExceptionMapper
類。我想以某種方式讀取來自JAX-RS javax.ws.rs.core.Response
對象的原始請求URI。如何從JAX-RS獲取原始請求的URI javax.ws.rs.core.Response
當我檢查與在調試模式下的IntelliJ IDEA響應對象然後我可以看到下面的路徑下此信息:響應>上下文> resolvedUri其中
類型context
的是org.glassfish.jersy.client.ClientResponse
。這個類有一個resolvedUri
變量,它擁有我需要的信息。
我能以某種方式獲得這些信息嗎?我如何寫我的getRequestUri(response)
方法?
public class MyExceptionMapper implements ExceptionMapper<WebApplicationException> {
@Override
public Response toResponse(WebApplicationException error) {
Response response = error.getResponse();
ErrorResponse errorResponse = ErrorResponseBuilder
.builder()
.httpStatus(getDefaultStatusCodeIfNull(response))
.errorMessage(getCustomErrorMessage(response))
.requestedUri(getRequestedUri(response)) <--------- HOW TO READ IT?
.build();
return Response
.status(errorResponse.getHttpStatus())
.type(ExtendedMediaType.APPLICATION_JSON)
.entity(errorResponse)
.build();
}
}
你試過'URI URI = response.getLocation(); System.out.println(uri.toString());'? – Anddo
我試過了。它返回null :( – zappee
不確定,但作爲Java [API文檔](http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Response.html#getLocation--)它如果**不存在,則返回位置URI,否則返回null – Anddo