【问题标题】:RestEasy client throwing exceptionsRestEasy 客户端抛出异常
【发布时间】: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 方法来向我们展示明确的问题。
  • 您好,我在原帖中添加了它

标签: java rest resteasy


【解决方案1】:

修复它:)。这是我使用的一个小测试示例。在我没有使用 Response 之前(我的错)

服务器端

@GET
@Path("/test")
public Response test() {
    return Response.status(Response.Status.UNAUTHORIZED)
            .entity("TEST")
            .build();
}

客户端代理类

@GET
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
Response test();

客户

Response response = proxy.test();
String test = response.readEntity(String.class);
System.out.println(test);
System.out.println(response.getStatus());
response.close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2016-06-24
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多