1. ホーム
  2. アンドロイド

[解決済み】Android Gradle Apache HttpClientが存在しない?

2022-04-04 20:01:21

質問

IntelliJのプロジェクトをAndroid StudioのGradleシステムに変換しようとしているのですが、Apache HttpClientでエラーが発生しています?私が得ているエラーは次のとおりです。

Error:(10, 30) error: package org.apache.http.client does not exist
Error:(11, 30) error: package org.apache.http.client does not exist
Error:(12, 37) error: package org.apache.http.client.entity does not exist
Error:(13, 38) error: package org.apache.http.client.methods does not exist
Error:(14, 38) error: package org.apache.http.client.methods does not exist
Error:(15, 38) error: package org.apache.http.client.methods does not exist
Error:(16, 35) error: package org.apache.http.impl.client does not exist
Error:(134, 33) error: cannot find symbol class HttpUriRequest
Error:(164, 39) error: cannot find symbol class HttpUriRequest
Error:(106, 17) error: cannot find symbol class HttpGet
Error:(106, 39) error: cannot find symbol class HttpGet
Error:(117, 17) error: cannot find symbol class HttpPost
Error:(117, 40) error: cannot find symbol class HttpPost
Error:(125, 43) error: cannot find symbol class UrlEncodedFormEntity
Error:(135, 9) error: cannot find symbol class HttpClient
Error:(135, 33) error: cannot find symbol class DefaultHttpClient
Error:(155, 18) error: cannot find symbol class ClientProtocolException
Error:(165, 9) error: cannot find symbol class HttpClient
Error:(165, 33) error: cannot find symbol class DefaultHttpClient
Error:(185, 18) error: cannot find symbol class ClientProtocolException

私のbuild.gradleファイルには、以下の依存関係があります。

dependencies {
    compile 'com.google.android.gms:play-services:+'
    compile 'org.apache.httpcomponents:httpclient:4.2.6'
    compile 'org.apache.httpcomponents:httpmime:4.2.6'
    compile files('libs/core.jar')
}

多くの人が同じような問題を抱えているようですが、SOもGoogleも解決策を持っていないので、この質問が将来の検索者の助けになることを期待しています。

解決方法を教えてください。

非推奨のapache HttpClientを、新しいHttpURLConnectionに置き換えることをお勧めします。

一般的には、ハックやパッチ、回避策を講じるよりも、最新のSDKの変更に固執する方が良いのですが、それはたいてい後で後悔します :)

ステップ1

HttpGet httpGet = new HttpGet(url);

になります。

URL urlObj = new URL(url);

ステップ2

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpResponse response = httpClient.execute(httpGet, localContext);
InputStream is = response.getEntity().getContent();

になります。

HttpURLConnection urlConnection = (HttpURLConnection) urlObj.openConnection();
InputStream is = urlConnection.getInputStream();

ステップ2ビス

int status = response.getStatusLine().getStatusCode();

になります。

int status = urlConnection.getResponseCode();