Phiên bản ứng dụng khách HTTP Apache được cung cấp trên kho Android là very very old.
Google Android 1.0 đã được phát hành với ảnh chụp Apache BETA trước của BETA. Để trùng với bản phát hành Android Apache HttpClient 4.0 API đầu tiên phải được đông lạnh sớm, trong khi nhiều giao diện và cấu trúc bên trong vẫn chưa được làm việc hoàn toàn. Khi Apache HttpClient 4.0 đã trưởng thành, dự án đã mong đợi Google kết hợp các cải tiến mã mới nhất vào cây mã của họ. Thật không may nó đã không xảy ra.
Nếu bạn không muốn chuyển sang một API mới, bạn có thể tự thêm một phiên bản mới hơn của thư viện Apache HttpClient vào dự án của bạn để thay thế cho phiên bản cũ NỮA trong Android SDK < 22.
Cách dễ nhất để thực hiện điều này khi nhắm mục tiêu SDK 23+ là sử dụng Apache HttpClient package for Android mới của Marek Sebera (như suggested by Apache), có khả năng hoạt động như một thay thế thả xuống. Chỉ cần thêm sự phụ thuộc sau đây để tập build.gradle của bạn (cập nhật số phiên bản nếu thích hợp):
compile "cz.msebera.android:httpclient:4.4.1.1"
và thay thế import org.apache.http.*
với import cz.msebera.android.httpclient.*
ở khắp mọi nơi trong dự án của bạn.
Lưu ý rằng nhiều lớp học từ thư viện cũ không còn được dùng nữa (ví dụ: HttpParams
, ThreadSafeClientConnManager
), vì vậy việc viết lại mã có lẽ sẽ là giải pháp tốt hơn.
Edit: Tôi tìm thấy một số trường hợp sử dụng đã nhận được ngoại lệ thời gian chờ khi đằng sau máy chủ proxy sau khi chúng tôi cập nhật vào Http khách hàng mới hơn. Vì mã có đầy đủ các cảnh báo không được chấp nhận ở khắp mọi nơi, chúng tôi quyết định rằng không đáng để nỗ lực khắc phục sự cố. Tôi khuyên bạn nên kiểm tra kỹ lưỡng trước khi cố gắng đưa điều này vào sản xuất.
Như đã đề cập trong câu trả lời khác, một giải pháp tốt hơn là để cắn đạn và chuyển sang một trong hai bản Android HttpUrlConnection
, hoặc nếu không đáp ứng được nhu cầu của bạn, bạn có thể sử dụng thư viện OkHttp
, đó là những gì HttpUrlConnection
là internally based upon anyway.
Nguồn
2015-09-27 05:56:25
Nó không phải là lỗi. Đó là cảnh báo. Bạn nên đọc tài liệu. Phải có gợi ý mà bạn nên sử dụng lớp – Jens
có 4 gợi ý: – Sml
kiểm tra tùy chọn 'Sử dụng API không được chấp nhận': chỉnh sửa cài đặt hồ sơ kiểm tra và lớp Chú thích 'HttpEntity' thành @Deprecated: chỉnh sửa cài đặt ý định. Tôi nên chọn tùy chọn nào ?? tôi thực sự không có ý tưởng những gì họ có nghĩa là – Sml