現在のアプリで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以上を対象とする場合の正しい道なのかと思います。
さて、私は1週間待ってから、たくさんの研究をしました。私は答えを見つけたと思います。
私は、初心者からプロの方まで、Androidプログラマーに、レトロフィットと呼ばれる非常に役立つライブラリの存在を知っておくことを強くお勧めします。
広範なドキュメントが http://square.github.io/retrofit/ にあります
スタックオーバーフローには、リモートRESTサービスに接続するためにネットワークを介して実行する必要があるほとんどすべてのサンプルもあります。
HttpURLConnectionとAsyncTaskの使用を停止することをお勧めします。後付けははるかに高速であり、すべての障害状況をそのまま使用できます。
docs は、このブログへのリンクと同様に、APIレベル1以降に使用されている RL.openConnection を使用することをお勧めします。
HttpURLConnection に切り替える必要があります。少し多くのコードが必要ですが、それほど多くはありません。 SDK 22では、すでにHttpClientが非推奨になっています。SDK19をターゲットにしている場合でも、22でコンパイルすると警告が表示されます。
推測のみです(現在、これのソースは見つかりません)が、非推奨のライブラリでは修正を行わないため、セキュリティ上の問題やバグは修正されないままです。
オプション1: ボレー
Android 1.6(APIレベル4)以降
ボレーのメリット:
オプション2: OkHttp
OkHttpはAndroid 2.3以降をサポートしています。Javaの場合、最小要件は1.7です。
ドキュメントに記載されている機能の一部:
Google Docs によると:
Apache HTTPクライアントを引き続き使用するために、Android 9以上をターゲットとするアプリは、AndroidManifest.xmlに以下を追加できます。
<uses-library Android:name="org.Apache.http.legacy" Android:required="false"/>
これは私には有効です-SDKレベル28。
HTTPを効率的に実行し、データの読み込みを高速化し、帯域幅を節約するOkHttpに切り替える時が来ました。同期ブロッキング呼び出しとコールバックによる非同期呼び出しの両方をサポートします。
OkHttpはAndroid 2.3以降をサポートしています。
以下の依存関係をAndroidプロジェクトに追加します。
compile 'com.squareup.okhttp:okhttp:2.4.0'