Nimrod007 Nimrod007 - 2 months ago 14x
Java Question

Basic Authentication with RestTemplate - compilation error - The constructor HttpClient() is not visible

trying to add basic auth to restTemplate

problem I encounter is that i cant initialize : (with both the imports in the code snippet)

HttpClient client = new HttpClient();

This code resolves in a compilation error (with no suggestion available from eclipse to fix this issue)

1) what is the problem ?

2) Am i importing the wrong class ?

my code snippet :

import org.apache.http.client.HttpClient;
//OR (not together)

HttpClient client = new HttpClient(); //this line dosent compile
UsernamePasswordCredentials credentials =
new UsernamePasswordCredentials("USERNAME","PASS");
new AuthScope("", 9090, AuthScope.ANY_REALM),
CommonsClientHttpRequestFactory commons =
new CommonsClientHttpRequestFactory(client);

RestTemplate template = new RestTemplate(commons);
SomeObject result = template.getForObject(

Running this get the Exception :

> failed due to an unhandled exception: java.lang.Error: Unresolved
> compilation problems: The constructor HttpClient() is not visible
> The method getState() is undefined for the type HttpClient
> CommonsClientHttpRequestFactory cannot be resolved to a type
> CommonsClientHttpRequestFactory cannot be resolved to a type
> SomeObject cannot be resolved to a type The method
> getForObject(String, Class<SomeObject>, Object...) from the type
> RestTemplate refers to the missing type SomeObject SomeObject cannot
> be resolved to a type


in the end its much easier to run Basic Authentication using :

and not


my code snippet :

private HttpHeaders createHeaders(final String username, final String password ){
    HttpHeaders headers =  new HttpHeaders(){
             String auth = username + ":" + password;
             byte[] encodedAuth = Base64.encodeBase64(
                auth.getBytes(Charset.forName("US-ASCII")) );
             String authHeader = "Basic " + new String( encodedAuth );
             set( "Authorization", authHeader );
       headers.add("Content-Type", "application/xml");
       headers.add("Accept", "application/xml");

       return headers;

    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<MyClass> response;
    httpHeaders = this.createHeaders("user", "pass");

    String url = ""
    response =, HttpMethod.GET, new HttpEntity<Object>(httpHeaders), MyClass.class);

and it works !