web-dev-qa-db-ja.com

非推奨のDefaultHttpClientの代替

現在のアプリでDefaultHttpClientを使用しています。

私はDefaultHttpClientが廃止されていると述べているこの記事を読みました: http://developer.Android.com/reference/org/Apache/http/impl/client/DefaultHttpClient.html

それはこのウェブサイトを指しています: http://Android-developers.blogspot.com/2011/09/androids-http-clients.html?m=1 これは古すぎて2011年に書かれました。

DefaultHttpClientを使用してドロップし、ApacheのHttpClientを使用するこの記事に従います: http://loopj.com/Android-async-http/

これが2015年のプログラミングAndroid API 19以上を対象とする場合の正しい道なのかと思います。

11
Ehsan

さて、私は1週間待ってから、たくさんの研究をしました。私は答えを見つけたと思います。

私は、初心者からプロの方まで、Androidプログラマーに、レトロフィットと呼ばれる非常に役立つライブラリの存在を知っておくことを強くお勧めします。

広範なドキュメントが http://square.github.io/retrofit/ にあります

スタックオーバーフローには、リモートRESTサービスに接続するためにネットワークを介して実行する必要があるほとんどすべてのサンプルもあります。

HttpURLConnectionとAsyncTaskの使用を停止することをお勧めします。後付けははるかに高速であり、すべての障害状況をそのまま使用できます。

11
Ehsan

docs は、このブログへのリンクと同様に、APIレベル1以降に使用されている RL.openConnection を使用することをお勧めします。

Alternative

5
weston

HttpURLConnection に切り替える必要があります。少し多くのコードが必要ですが、それほど多くはありません。 SDK 22では、すでにHttpClientが非推奨になっています。SDK19をターゲットにしている場合でも、22でコンパイルすると警告が表示されます。

推測のみです(現在、これのソースは見つかりません)が、非推奨のライブラリでは修正を行わないため、セキュリティ上の問題やバグは修正されないままです。

3
Sebastian

オプション1: ボレー

Android 1.6(APIレベル4)以降

ボレーのメリット:

  • ネットワーク要求の自動スケジューリング。
  • 複数の同時ネットワーク接続。
  • 標準のHTTPキャッシュコヒーレンスを備えた透過的なディスクおよびメモリレスポンスキャッシング。
  • リクエストの優先順位付けのサポート。
  • キャンセルリクエストAPI。単一のリクエストをキャンセルするか、キャンセルするリクエストのブロックまたはスコープを設定できます。
  • 再試行やバックオフなどのカスタマイズが容易。
  • ネットワークから非同期でフェッチされたデータをUIに正しく入力するのを容易にする強力な順序付け。
  • デバッグおよびトレースツール。

オプション2: OkHttp

OkHttpはAndroid 2.3以降をサポートしています。Javaの場合、最小要件は1.7です。

ドキュメントに記載されている機能の一部:

  • HTTP/2およびSPDYのサポートにより、同じホストへのすべてのリクエストでソケットを共有できます。
  • 接続プーリングにより、リクエストのレイテンシが短縮されます(SPDYが利用できない場合)。
  • 透過的なGZIPはダウンロードサイズを縮小します。
  • 応答キャッシングは、繰り返し要求に対してネットワークを完全に回避します。
2
Faiz Siddiqui

Google Docs によると:

Apache HTTPクライアントを引き続き使用するために、Android 9以上をターゲットとするアプリは、AndroidManifest.xmlに以下を追加できます。

<uses-library Android:name="org.Apache.http.legacy" Android:required="false"/>

これは私には有効です-SDKレベル28。

0
Satish Shetty

HTTPを効率的に実行し、データの読み込みを高速化し、帯域幅を節約するOkHttpに切り替える時が来ました。同期ブロッキング呼び出しとコールバックによる非同期呼び出しの両方をサポートします。

OkHttpはAndroid 2.3以降をサポートしています。

以下の依存関係をAndroidプロジェクトに追加します。

compile 'com.squareup.okhttp:okhttp:2.4.0'
0
Kanagalingam