Java HTTP库,用于请求OpenAPI令牌并发出授权的请求

时间:2019-08-12 07:41:04

标签: java


我需要执行一组HTTP操作,其中包括带有表单参数的POST和使用HTTP标头设置授权标头的GET:

public void testResourceIsSecured() {
    String authResponse = ClientBuilder.newClient()
            .target("http://localhost:8080/auth/realms/thorntail-cmd-client/protocol/openid-connect/token")
            .request()
            .post(Entity.form(new Form()
                    .param("grant_type", "password")
                    .param("client_id", "thorntail-cmd-client-example")
                    .param("username", "user1")
                    .param("password", "password1")
            ), String.class);
    String accessToken = getAccessTokenFromResponse(authResponse);

    String serviceResponse = ClientBuilder.newClient()
            .target("http://localhost:8080/mpjwt/secured")
            .request()
            .header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken)
            .get(String.class);
    Assert.assertEquals("Hi user1, this resource is secured", serviceResponse);
}

private String getAccessTokenFromResponse(String response) {
    String tokenStart = response.substring("{\"access_token\":\"".length());
    return tokenStart.substring(0, tokenStart.indexOf("\""));
}

上面的代码可与Resteasy客户端API一起使用,尽管由于引入了依赖性而不允许使用该库。建议将哪个Java HTTP库用作替换,这将带来最少的依赖性? 谢谢

1 个答案:

答案 0 :(得分:0)

您可以尝试RestAssured。不知道它的依赖项是否更适合您的需求。它可以用于测试API,因此可以与简单的REST客户端一起使用。