<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-apache-client</artifactId>
<version>2.32</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.ClientProperties;
import org.glassfish.jersey.client.HttpUrlConnectorProvider;
import org.glassfish.jersey.client.oauth2.BearerToken;
import org.glassfish.jersey.client.oauth2.OAuth2ClientSupport;
import org.glassfish.jersey.client.oauth2.TokenResult;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
public class HttpClientExample {
public static void main(String[] args) {
Client client = createClient();
TokenResult tokenResult = authenticate(client);
client.register(OAuth2ClientSupport.feature(tokenResult.getToken()));
String endpoint = "https://api.example.com/user";
Response response = client.target(endpoint)
.request(MediaType.APPLICATION_JSON)
.get();
if (response.getStatus() == Response.Status.OK.getStatusCode()) {
String userInfo = response.readEntity(String.class);
} else {
}
client.close();
}
private static Client createClient() {
ClientConfig clientConfig = new ClientConfig();
clientConfig.connectorProvider(new ApacheConnectorProvider());
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, 5000);
clientConfig.property(ClientProperties.READ_TIMEOUT, 5000);
return ClientBuilder.newBuilder()
.withConfig(clientConfig)
.build();
}
private static TokenResult authenticate(Client client) {
String accessToken = "YOUR_ACCESS_TOKEN";
BearerToken bearerToken = new BearerToken(accessToken);
return OAuth2ClientSupport.tokenResult(client.target("https://auth.example.com/token")
.queryParam("grant_type", "client_credentials")
.request()
.post(bearerToken));
}
}