2012-03-04 54 views
16

Tôi đang tìm cách tạo biểu mẫu đăng nhập cho một ứng dụng Android. Tôi muốn sử dụng một phương thức post để gửi thông tin đến phía máy chủ, nơi nó được xử lý bởi một tệp PHP; do đó xác nhận các thông số và gửi trả lời.URLConnection hoặc HTTPClient: Tính năng nào cung cấp chức năng tốt hơn và hiệu quả hơn?

Tôi đã xem xét các triển khai bằng cách sử dụng HttpClient và URLConnection, chúng rất giống nhau. Tính năng nào hiệu quả hơn để sử dụng trong ứng dụng Android?

Cảm ơn Fabii

+2

Kiểm tra blog android chính thức [tại đây] (http://android-developers.blogspot.co.nz/2011/09/androids-http-clients.html), đáng để đọc. – yorkw

+0

Bản sao có thể có của http://stackoverflow.com/q/4799151/741249 – THelper

Trả lời

18

Tôi tin rằng trong trường hợp này nó tùy thuộc vào bất cứ API bạn tìm thấy tự nhiên hơn. Nói chung, HTTPClient hiệu quả hơn bên trong ứng dụng phía máy chủ (hoặc có thể là ứng dụng hàng loạt), vì nó cho phép bạn chỉ định một nhóm kết nối đa luồng, với tổng số kết nối tối đa và số kết nối tối đa cho mỗi máy chủ (đảm bảo kết nối đồng thời tới cùng một máy chủ không được serialized (một vấn đề với HttpUrlConnection)). Nhưng trong một ứng dụng Android, có thể bạn sẽ chỉ tạo một kết nối duy nhất tại một thời điểm, vì vậy điều này không quan trọng.

0

Nếu bạn không cố gửi và nhận các tệp lớn, tôi khuyên bạn nên sử dụng HttpClient.
Bắt đầu và sử dụng dễ dàng hơn nhiều và có nhiều ví dụ hoạt động khả dụng hơn trên internet.

LƯU Ý: Đây là HttpClient khác với HTTPClient (trường hợp ghi chú) là triển khai của nhà cung cấp khác.

18

Tôi đã thực hiện một chút nghiên cứu về điều này, Tôi đã sử dụng Apache HttpClient trong một thời gian dài trong Android. Nó trông là một lựa chọn tự nhiên đối với tôi và nghĩ rằng nó sẽ được cải thiện theo thời gian.

Ở phía bên kia trong khi tôi đang phát triển cho BlackBerryOS cũ, tôi đã sử dụng HttpUrlConnection.

Rõ ràng với tôi rằng hiệu suất của BB tốt hơn so với Android trong bối cảnh kết nối mạng.

HttpClient là một lớp đầy đủ chức năng nhưng lỗi cung cấp một tập hợp lớn các API/phương pháp. Nó có thể được sử dụng để tạo ra một WebBrowser đầy đủ chức năng cho Android. Nhưng nó có một số vấn đề trên phiên bản Android cũ hơn và nó không được Google đóng góp tích cực.

Trong khi HttpUrlConnection có một API khá hữu ích chỉ hữu ích để phát triển ứng dụng khách của mạng. Nó đã cải thiện bộ nhớ đệm phản hồi và cải tiến kỹ thuật nén trên Android 2.3 trở lên. Nó được khởi động lại khi bạn đang xây dựng một ứng dụng client mạng.

"Apache HttpClient có ít lỗi trên Eclair và Froyo. Nó là sự lựa chọn tốt nhất cho các phiên bản.

Đối với Gingerbread và tốt hơn, HttpURLConnection là sự lựa chọn tốt nhất. API đơn giản của nó và làm cho kích thước nhỏ Ứng dụng mới nên sử dụng HttpURLConnection, đây là nơi Google sẽ tiêu tốn năng lượng của nó trong tương lai."

Tham khảo để biết chi tiết

http://android-developers.blogspot.in/2011/09/androids-http-clients.html

+7

Đáng ngạc nhiên tương tự như mục nhập blog này: http://android-developers.blogspot.com/2011/09/androids-http-clients.html –

+0

Có lẽ bạn nên trích dẫn tham chiếu. – amertkara

+0

Bạn có thể vui lòng cho chúng tôi biết loại sự khác biệt về hiệu suất mà bạn đã trải nghiệm không? Bất kỳ cụ thể nào, ngoài bộ nhớ cache, nén. – Hrishikesh

0

Mặc dù thẻ dành riêng cho Android, HttpURLConnection chung cũng là lựa chọn tốt hơn khi nói đến các ứng dụng Java EE vì nó sẽ sử dụng ngăn xếp HTTP đi kèm với máy chủ ứng dụng bao gồm cấu hình chứng chỉ HTTPS trong ứng dụng cấp máy chủ thay vì mã.

Nó cũng sẽ cho phép bạn để có được phiên bản mới nhất của SSLs được cung cấp bởi các máy chủ ứng dụng ngăn xếp chứ không phải là bị mắc kẹt với một phiên bản cũ của httpclient mà có thể không làm việc với TLS 1.2

0

tôi thường muốn giới thiệu URLConnection vì nó có thể được cập nhật với JDK. Trong một trường hợp, chúng tôi đã có cuộc gọi sử dụng phiên bản HTTP Client cũ hơn không hỗ trợ TLS v1.2.

Tuy nhiên, tôi sẽ không sử dụng trực tiếp URLConnection, tôi thường sử dụng API cấp cao hơn như Ứng dụng khách JAX-RS hoặc khách hàng wsimport để kết nối với trang web khác.

Các vấn đề liên quan