Hiện tại tôi đang sử dụng một DefaultHttpClient với ThreadSafeClientConnManager. Điều này làm việc tốt, nhưng tôi muốn thay thế bằng cách sử dụng AndroidHttpClient. Rất tiếc, tôi không thể thêm UsernamePasswordCredentials hiện quan trọng đối với tôi. Bất cứ ai có thể cung cấp một mẹo hoặc giải pháp?Cách sử dụng AndroidHttpClient (API Cấp 8) và UsernamePasswordCredentials?
5
A
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
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
- 1. Cách sử dụng lớp CalendarContract trong API Cấp 8
- 2. Android - Sử dụng view.setX() và setY trong api 8
- 3. Sử dụng Loader trong API 8
- 4. ASP.NET MVC4 và Xác thực API Web + Cấp phép (Windows 8 và Web)
- 5. DefaultHttpClient to AndroidHttpClient
- 6. Ứng dụng không chỉ định cấp API
- 7. API lịch Android và API nhà cung cấp lịch
- 8. Làm cách nào để sử dụng cờ 8 bit cấp thấp làm điều kiện?
- 9. Cách nhận nguồn cấp tin tức bằng cách sử dụng api đồ thị Facebook?
- 10. Chức năng ANSI của Windows API và UTF-8
- 11. Cách sử dụng Google Translate API
- 12. Cách sử dụng API biểu đồ Google
- 13. Trong IntelliJ, cách đặt cấp API Android
- 14. setAdapter "Cuộc gọi yêu cầu cấp API 11 (min hiện tại là 8): android.widget.AbsListView # setAdapter"?
- 15. Xác thực người dùng API bằng cách sử dụng nhà cung cấp Oauth bên thứ ba
- 16. utf-8 và htmlentities trong nguồn cấp dữ liệu RSS
- 17. Cung cấp cho ứng dụng Java Giao diện và cảm nhận của Metro trong Windows 8
- 18. Cách đăng nhập UTF-8 bằng cách sử dụng EnterpriseLibrary.Logging
- 19. Cách nhận phản hồi từ API MediaCapture trong Windows 8
- 20. Có thể sử dụng API Java 8 Streams để xử lý không đồng bộ không?
- 21. OCR API cho Windows Phone 8
- 22. Cách sử dụng các cấp độ log4J
- 23. tạo api bằng cách sử dụng php
- 24. Sử dụng API của eBay
- 25. Mã hóa chính thức được Twitter Streaming API sử dụng? Có phải là UTF-8 không?
- 26. API sử dụng sockaddr_storage
- 27. Tạo tệp UTF-8 bằng cách sử dụng HttpServletResponse
- 28. Sử dụng SQLite3 trong Windows 8 Ứng dụng Javascript
- 29. Tạo và cung cấp PDF Blob đúng cách qua Tệp HTML5 và API URL
- 30. cách sử dụng (useUnicode = yes characterEncoding = UTF-8) với DBCP
Đ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
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'? –
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