Có ai đã cố sử dụng phiên bản Apache HttpClient mới hơn trên Android không? Có một lỗi gây phiền nhiễu trong HttpClient được sử dụng bởi Android và tôi đã tự hỏi nếu tôi sẽ chạy vào các vấn đề cố gắng phân phối lại HttpClient 4.1 với ứng dụng của tôi.Apache HttpClient 4.1 trên Android
Trả lời
Điều đó có vẻ không phải là ý tưởng hay, nhất là khi tên gói và tên lớp không được thay đổi trong phiên bản mới hơn của Ứng dụng khách. Nhiều khả năng bạn sẽ không thể dự đoán được lớp nào được sử dụng (cũ hay mới).
Chỉ trong trường hợp ai đó quan tâm - tôi đã xây dựng lại ứng dụng của mình với Apache HttpClient 4.01 và mọi thứ dường như hoạt động tốt. Ứng dụng này chỉ tăng 100kB.
Bạn có thể cung cấp cho chúng tôi một số hướng dẫn từng bước về cách xây dựng dựa trên HTTPClient 4.x thay vì phiên bản tích hợp không? – Ognyan
Mỏ đã tăng 250kB (Apache HttpClient 4.2.1), phiên bản mới nhất của httpclientandroidlib từ tháng 7 năm 2012 – Twilite
Ogre_BGR: bạn có tìm thấy giải pháp nào không? Tôi đang cố gắng đóng gói lại của riêng tôi để sử dụng HttpClient 4.3.1: http://stackoverflow.com/questions/21134237/how-to-repackage-httpclient-4-3-1-and-remove-dependencies-on- commons-logging – Stuck
Tôi đã chạy 4.1 tốt cho đến khi tôi bắt đầu sử dụng ThreadSafeClientConnManager và Scheme tạo ra một số lỗi thời gian chạy khó chịu.
ERROR/dalvikvm(1077): Could not find method org.apache.http.conn.scheme.Scheme.<init>, referenced from method com.example.MyActivity.download
WARN/dalvikvm(1077): VFY: unable to resolve direct method 3290: Lorg/apache/http/conn/scheme/Scheme;.<init> (Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
WARN/dalvikvm(1077): VFY: rejecting opcode 0x70 at 0x0035
Tôi nghi ngờ rằng Lược đồ cũ hơn trong API Android được sử dụng có một hàm tạo khác.
Tôi đã tạo tập lệnh để chuyển đổi bản phát hành HttpClient kho thành dự án thư viện Android. Các gói được đổi tên để không có sự nhầm lẫn nào trong đó các lớp được sử dụng.
Ngoài ra ThreadSafeClientConnManager và Scheme hoạt động tốt.
Hãy xem: httpclientandroidlib
Có một official cổng android của apache HttpClient bạn có thể tìm thấy trong maven repository (hoặc tìm kiếm "httpclient-android").
Đáng buồn là Android đi kèm với một nhánh của apache HttpClient được tích hợp sẵn và nó bị kẹt trong phiên bản 4.0.
Nếu bạn sử dụng Plugin Maven Shade, bạn có thể chuyển tất cả sang gói khác và lưu bằng cách sử dụng nó. –