web-dev-qa-db-ja.com

「org.Apache.http.HttpEntity」は非推奨です。 Android studio?

私は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

どうすれば解決できますか?

14
Sml

これをあなたの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'
}
19
bfacumat

引用 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を使用し続けるための回避策 がありますが、本当に別の場所に移動する必要があります。

7
CommonsWare

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.*プロジェクトのあらゆる場所。

古いライブラリの多くのクラスが非推奨になっていることに注意してください(例:HttpParamsThreadSafeClientConnManager)。したがって、コードを書き直す方がおそらくより良い解決策になるでしょう。


編集:新しいHttpクライアントに更新した後、プロキシサーバーの背後でタイムアウト例外が発生する場合がありました。コードには非推奨の警告があふれているため、問題を修正する努力をする価値はないと判断しました。これを実稼働に移す前に、徹底的にテストすることをお勧めします。

他の回答で述べたように、はるかに良い解決策は、弾丸を噛んでネイティブのAndroid HttpUrlConnectionに切り替えるか、それがあなたのニーズに合わない場合は、ライブラリOkHttpを使用できます。これは、HttpUrlConnection内部的にとにかく であるものです。

5
Tim Rae

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 を使用します。

3
Manas

Gradleで次の依存関係を使用する

dependencies {
    compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.Apache.http.client:4.1.2'
}
1

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ファイルを貼り付けます。

0

これをあなたの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'
}

このライブラリを使用すると、問題なく使用できます。少なくとも、これまでは問題ありませんでした。

0
Matt Barrera