【发布时间】:2018-03-22 05:06:42
【问题描述】:
我有一个 REST 服务,如果授权错误,我会返回 401 和一些错误消息。
例如,如果我使用 postman 或其他 REST 客户端,响应状态为 401 和有效负载:
{
"data": null,
"errors": [
{
"code": "REQUEST_NOT_AUTHORIZED",
"message": "Request not authorized"
}
]
}
如果我使用 RestEasy 客户端,那么这个异常是由客户端自动抛出的:
EJB Invocation failed on component GatewayApi for method public com.example.AuthToken com.example.GatewayApi.authenticate(....): javax.ejb.EJBException: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
Caused by: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
如果我尝试/捕获异常,那么我的有效负载就消失了。
我正在实施的方式是(例如):
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(UriBuilder.fromPath(SERVICE_URL));
proxy = target.proxy(GatewayApiInterface.class);
后期编辑 - 验证方法
public AuthToken authenticate(String id, String name, String password) {
try {
ResponseEnvelope<AuthToken> authTokenResponseEnvelope = proxy.authenticate(id, name, password);
return authTokenResponseEnvelope.getData();
} catch (javax.ws.rs.NotAuthorizedException wae) {
return null;
}
}
有什么方法可以阻止 RestEasy 每次状态时抛出异常!= 200? 或者以某种方式从 Rest Server 获取我的原始有效负载?
【问题讨论】:
-
您可能想分享 com.example.GatewayApi.authenticate 方法来向我们展示明确的问题。
-
您好,我在原帖中添加了它