私はAndroid studio API22を使用していますが、これらのエラーがあります:
'org.Apache.http.HttpEntity' is deprecated
'org.Apache.http.HttpResponse' is deprecated
'org.Apache.http.NameValuePair' is deprecated
'org.Apache.http.client.HttpClient' is deprecated
'org.Apache.http.client.entity.UrlEncodedFormEntity' is deprecated
'org.Apache.http.client.methods.HttpPost' is deprecated
'org.Apache.http.impl.client.DefaultHttpClient' is deprecated
'org.Apache.http.message.BasicNameValuePair' is deprecated
'org.Apache.http.params.BasicHttpParams' is deprecated
'org.Apache.http.params.HttpConnectionParams' is deprecated
'org.Apache.http.params.HttpParams' is deprecated
'org.Apache.http.util.EntityUtils' is deprecated
どうすれば解決できますか?
これをあなたのgradleに追加してください
useLibrary 'org.Apache.http.legacy'
例
Android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 2
versionName "1.0.1"
}
buildTypes {
release {
debuggable false
signingConfig signingConfigs.releaseConfig
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
debugSigned {
debuggable true
signingConfig signingConfigs.releaseConfig
}
debug {
debuggable true
}
}
useLibrary 'org.Apache.http.legacy'
}
引用 myself :
HttpClient APIを引き続き使用する必要がある場合は、 OkHttp とそのHttpClient互換性レイヤーへの切り替えを検討するか、 Apacheの個別のAndroid= HttpClientのエディション 。それ以外の場合は、HttpURLConnectionまたはOkHttpのネイティブAPIに切り替えます。
または、HttpClientの使用目的に応じて、より具体的なネットワークライブラリ(Webサービス用のレトロフィット、画像用のPicassoまたはUniversal Image Loaderなど)を使用します。
また、HttpClientはM Developer PreviewのSDKから削除され、Androidの次のエディションで削除されることを示しています。 MでHttpClientを使用し続けるための回避策 がありますが、本当に別の場所に移動する必要があります。
Stock Androidで提供されたApache HTTPクライアントのバージョンは 非常に古い でした。
Google Android 1.0はApache HttpClientのベータ前のスナップショットでリリースされました。最初のAndroidリリースApache HttpClient 4.0 APIは時期尚早に凍結する必要がありましたが、 Apache HttpClient 4.0が成熟するにつれて、プロジェクトはGoogleが最新のコード改善をコードツリーに組み込むことを期待していましたが、残念ながらそれは起こりませんでした。
新しいAPIに切り替えたくない場合は、Apache HttpClientライブラリの新しいバージョンを手動でプロジェクトに追加して、Android SDK <22。
SDK 23+を対象とする場合にこれを行う最も簡単な方法は、Marek Seberaの新しい Android向けのApache HttpClientパッケージ ( Apacheが推奨 )を使用することです。 -代わりに。 build.gradleファイルに次の依存関係を追加するだけです(必要に応じてバージョン番号を更新します)。
compile "cz.msebera.Android:httpclient:4.4.1.1"
そして、import org.Apache.http.*
with import cz.msebera.Android.httpclient.*
プロジェクトのあらゆる場所。
古いライブラリの多くのクラスが非推奨になっていることに注意してください(例:HttpParams
、ThreadSafeClientConnManager
)。したがって、コードを書き直す方がおそらくより良い解決策になるでしょう。
編集:新しいHttpクライアントに更新した後、プロキシサーバーの背後でタイムアウト例外が発生する場合がありました。コードには非推奨の警告があふれているため、問題を修正する努力をする価値はないと判断しました。これを実稼働に移す前に、徹底的にテストすることをお勧めします。
他の回答で述べたように、はるかに良い解決策は、弾丸を噛んでネイティブのAndroid HttpUrlConnection
に切り替えるか、それがあなたのニーズに合わない場合は、ライブラリOkHttp
を使用できます。これは、HttpUrlConnection
が 内部的にとにかく であるものです。
Android lollypop 5.1(API 22)からdeperected HttpClient:-
しかし、まだAndroid studio:
Goto app\build.gradleファイル:
defaultConfig {
applicationId "com.XXXXX.XXX"
minSdkVersion 16
targetSdkVersion 23
-----------
-----------
useLibrary 'org.Apache.http.legacy'
}
[または代替]
ダウンロードして HttpClient jar ファイルをプロジェクトに追加するか、 okHttp を使用します。
Gradleで次の依存関係を使用する
dependencies {
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.Apache.http.client:4.1.2'
}
org.Apache.http.legacy
ここ からのjarファイル。
の中に build.gradle
ファイル、次のコードを入力します
defaultConfig {
useLibrary 'org.Apache.http.legacy'
}
ダウンロードした.jarファイルを次の場所に保存します
./sdk/platforms/Android-23/optional/(.jar file)
プラットフォームでAndroid-23を使用していますが、使用しているAPIレベルによって異なります。オプションフォルダーが存在しない場合は、gradleプロジェクトを同期する前に、オプションフォルダーを作成し、その中に.jarファイルを貼り付けます。
これをあなたのgradleに追加してください
useLibrary 'org.Apache.http.legacy'
例
Android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 2
versionName "1.0.1"
}
buildTypes {
release {
debuggable false
signingConfig signingConfigs.releaseConfig
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
debugSigned {
debuggable true
signingConfig signingConfigs.releaseConfig
}
debug {
debuggable true
}
}
useLibrary 'org.Apache.http.legacy'
}
このライブラリを使用すると、問題なく使用できます。少なくとも、これまでは問題ありませんでした。