2011-01-29 36 views

Trả lời

0

Bạn cần sử dụng lớp HttpRequestInterceptor để xác thực.

Dưới đây là một ví dụ

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

Điều này sẽ mở ra một câu hỏi mới: Cách thêm trình chặn vào AndroidHttpClient? – lichtzeichenanlage

+0

Bạn có thể vui lòng cho tôi biết tại sao bạn đang cố gắng sử dụng 'AndroidHttpClient'? –

+0

Hey Tammay. Một mặt mã trông sạch hơn với tôi, mặt khác tôi cố gắng sử dụng các lớp tiêu chuẩn thay vì viết và duy trì một lần của tôi. Những lý do đó có hợp lệ không? – lichtzeichenanlage

0

Tôi biết câu hỏi là cũ nhưng vì lợi ích của ai ngại về vấn đề này (như tôi đã làm), bạn có thể cuộn tiêu đề mình với HttpGet đối tượng. Giống như vậy:

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

Phương thức mã hóa (byte [], int) trong loại Base64 không áp dụng cho các đối số (String) .. –

0

Một số cải tiến đối với câu trả lời của Saad Farooq, mã sau đây phù hợp với tôi.

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

getRequest = new HttpGet(url); 

getRequest.addHeader("Authorization", "Basic " + Base64.encodeToString(new 
       String(username + ":" + password).getBytes(), Base64.NO_WRAP)); 
Các vấn đề liên quan