Как использовать AndroidHttpClient (уровень API 8) и UsernamePasswordCredentials? - PullRequest
5 голосов
/ 29 января 2011

В настоящее время я использую DefaultHttpClient с ThreadSafeClientConnManager. Это работает нормально, но я хотел бы заменить это с помощью AndroidHttpClient. К сожалению, я не могу добавить UsernamePasswordCredentials, что в данный момент важно для меня. Кто-нибудь может дать совет или решение?

Ответы [ 3 ]

0 голосов
/ 05 апреля 2012

Я знаю, что вопрос старый, но для того, чтобы кто-то наткнулся на это (как я), вы можете свернуть заголовок самостоятельно с помощью объекта HttpGet. Вот так:

httpGet.addHeader("Authorization", "Basic " + Base64.encode(username+":"+password));
0 голосов
/ 25 января 2014

Некоторое улучшение ответа Саада Фарука, у меня работает следующий код.

final AndroidHttpClient client = AndroidHttpClient.newInstance("Android");

getRequest = new HttpGet(url);

getRequest.addHeader("Authorization", "Basic " + Base64.encodeToString(new
                String(username + ":" + password).getBytes(), Base64.NO_WRAP));
0 голосов
/ 29 января 2011

Вам нужно использовать HttpRequestInterceptor класс для аутентификации.

Вот пример

HttpRequestInterceptor httpRequestInterceptor = new HttpRequestInterceptor() {
    public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException {
        AuthState authState = (AuthState) context.getAttribute(ClientContext.TARGET_AUTH_STATE);
        CredentialsProvider credsProvider = (CredentialsProvider) context.getAttribute(
                ClientContext.CREDS_PROVIDER);
        HttpHost targetHost = (HttpHost) context.getAttribute(ExecutionContext.HTTP_TARGET_HOST);

        if (authState.getAuthScheme() == null) {
            AuthScope authScope = new AuthScope(targetHost.getHostName(), targetHost.getPort());
            Credentials creds = credsProvider.getCredentials(authScope);
            if (creds != null) {
                authState.setAuthScheme(new BasicScheme());
                authState.setCredentials(creds);
            }
        }
    }    
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...