Basic Authentication в HttpClient, HttpPost, HttpGet в Java

Понадобилось для одной задачи получать данные из сервиса в сети. Но там была необходима аутентификация. Пару часов провозился пытаясь с хэдерами разобраться. Оказалось всё как обычно: есть уже готовые механизмы для этого.

Изначально пытался хэдеры сам прописать для HttpPost, HttpGet:

HttpPost httpPost = new HttpPost(site.getUrl());
httpPost.setEntity(new UrlEncodedFormEntity(params));
httpPost.setHeader("Authorization", "Basic " +  Base64String(site.login, site.password));


String paramString = URLEncodedUtils.format(params, "utf-8");
HttpGet httpGet = new HttpGet(site.getUrl()+"?" + paramString);
httpGet.setHeader("Authorization", "Basic " +  Base64String(site.login, site.password));

Для шифрования этот метод юзать:

private String Base64String(String login, String pas){

    String text = login+":"+ pas;
    byte[] data = null;
    try {
        data = text.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e1) {
    	e1.printStackTrace();
    }
    String base64 = Base64.encodeToString(data, Base64.DEFAULT);
    return base64;

}

Но всё равно не получилось. В итоге, оказалось, что можно самому DefaultHttpClient задать параметры авторизации.

DefaultHttpClient httpClient = new DefaultHttpClient();
                httpClient.getCredentialsProvider().setCredentials(
                	    new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, "basic"),
                	    new UsernamePasswordCredentials(site.login, site.password)
                	);

Или:

DefaultHttpClient httpClient = new DefaultHttpClient();
                httpClient.getCredentialsProvider().setCredentials(
                	    new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM, AuthPolicy.BASIC),
                	    new UsernamePasswordCredentials(site.login, site.password)
                	);