2011-01-29 6 views

cevap

0

Kimlik doğrulaması için HttpRequestInterceptor sınıfını kullanmanız gerekir.

İşte soru eski olduğunu biliyorum ama bu konuda tökezleyerek herkes yararına (Ben gibi) için, sen HttpGet nesneyle başlığını kendiniz dönebilirsiniz bir örnek

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); 
      } 
     } 
    }  
}; 
+0

Bu yeni bir soru açar: Önleyici AndroidHttpClient'e nasıl eklenir? – lichtzeichenanlage

+0

"AndroidHttpClient" i neden kullanmaya çalıştığınızı bana bildirir misiniz? –

+0

Hey Tammay. Bir yandan kod bana daha temiz görünüyor, öte yandan yazmayı ve bir kereliği korumak yerine standart sınıfları kullanmayı deniyorum. Bu nedenler geçerli mi? – lichtzeichenanlage

0

olduğunu. Bunun gibi:

httpGet.addHeader("Authorization", "Basic " + Base64.encode(username+":"+password)); 
+0

Bkz. Yöntem kodlama (bayt [], int) türünde Base64 argümanlar için geçerli değildir (String) .. –

0

Saad Farooq'un cevabındaki bazı geliştirmeler, aşağıdaki kod benim için çalışıyor.

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

getRequest = new HttpGet(url); 

getRequest.addHeader("Authorization", "Basic " + Base64.encodeToString(new 
       String(username + ":" + password).getBytes(), Base64.NO_WRAP));