我需要执行一组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库用作替换,这将带来最少的依赖性? 谢谢