web-dev-qa-db-ja.com

URLConnectionまたはHTTPClient:どちらがより優れた機能と効率を提供しますか?

Androidアプリケーションのログインフォームを作成しようとしています。postメソッドを使用して、PHP)で処理されるサーバー側に情報を送信したいと思います。 = file;これにより、パラメーターが検証され、応答が返されます。

HttpClientとURLConnectionを使用した実装を調べましたが、それらは非常に似ています。Androidアプリ内での利用に効率的なのはどれですか?

ありがとうFabii

17
Fabii

この場合、より自然なAPIに依存すると思います。一般に、HTTPClientは、サーバー側アプリケーション(またはバッチアプリケーション)内でより効率的です。これにより、合計接続の最大数、およびホストごとの最大接続数(これにより、同じホストがシリアル化されません(HttpUrlConnectionの問題))。ただし、Androidアプリでは、一度に1つの接続しか確立しないため、これは問題ではありません。

20
Kevin

私はこれについて少し調査しましたが、私はAndroidで長い間Apache HttpClientを使用しています。それは私には自然な選択に見え、時間の経過とともに改善されると思いました。

一方、レガシーBlackBerryOS用に開発している間、HttpUrlConnectionを使用しています。

ネットワーキングのコンテキストでは、BBのパフォーマンスがAndroidよりも優れていることは明らかでした。

HttpClientは完全に機能しますが、バグのあるクラスであり、API /メソッドの膨大なセットを提供します。これを使用して、Android用の完全に機能するWebBrowserを作成できます。ただし、古いバージョンのAndroidにはいくつかの問題があり、Googleによって積極的に提供されていません。

一方、HttpUrlConnectionには、ネットワーキングクライアントアプリケーションの開発に役立つ非常に便利なAPIがあります。 Android 2.3以降)でレスポンスキャッシングと圧縮技術が改善されました。ネットワーキングクライアントアプリケーションを構築しているときに推奨されます。

「ApacheHTTPClientは、EclairとFroyoのバグが少ないです。これらのリリースに最適です。

ジンジャーブレッド以上の場合は、HttpURLConnectionが最適です。そのシンプルなAPIと小さなサイズにより、Androidに最適です。透過的な圧縮と応答キャッシュにより、ネットワークの使用が削減され、速度が向上し、バッテリーが節約されます。新しいアプリケーションはHttpURLConnectionを使用する必要があります。これは、Googleが今後そのエネルギーを費やす場所です。」

詳細はこちら

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

19
JaydeepW

Androidチームによると、Gingerbread以上でHttpURLConnectionを使用する必要があります。これは、彼らが新しい開発作業を行う場所だからです。

http://Android-developers.blogspot.de/2011/09/androids-http-clients.html

編集:最近、SPDYサポートと自動再試行を含むSquareによるokhttpを見つけました: https://github.com/square/okhttp

10
Nacho Coloma

JDKで更新できるため、通常はURLConnectionをお勧めします。あるケースでは、TLSv1.2をサポートしていない古いバージョンのHTTPクライアントを使用した呼び出しがありました。

ただし、URLConnectionを直接使用するのではなく、通常、JAX-RSクライアントやwsimportクライアントなどの高レベルのAPIを使用して別のサイトに接続します。

1

このタグはAndroid専用ですが、Java EEアプリケーションに関しては、HTTPSの構成を含むアプリケーションサーバーに付属のHTTPスタックを利用するため、一般的にHttpURLConnectionもより良い選択です。コードではなく、アプリケーションサーバーレベルの証明書。

また、TLS 1.2で動作しない可能性のある古いバージョンのhttpclientで立ち往生するのではなく、アプリケーションサーバースタックによって提供される最新バージョンのSSLを取得することもできます。

0

大きなファイルを送受信しようとしない場合は、HttpClientをお勧めします。
開始して使用する方がはるかに簡単で、インターネット上で利用できるはるかに多くの実用的な例があります。

注:これはHttpClientが別のベンダーの実装であるHTTPClient(大文字と小文字の区別)とは異なることです。

0