[android] Android Gradle Apache HttpClient가 존재하지 않습니까?

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();


답변

target sdk를 23으로 사용하는 경우 build.gradle에 아래 코드를 추가하십시오.

android{
    compileSdkVersion 23
    buildToolsVersion '23.0.1'
    useLibrary  'org.apache.http.legacy'
}

빌드 스크립트를

classpath 'com.android.tools.build:gradle:1.3.0' 

자세한 내용은이 링크를 따르십시오


답변

이 문제가 발생하여 다음 페이지를 찾았습니다. 여기서 아파치 라이브러리가 더 이상 사용되지 않지만 제거되지 않았으므로 작동해야합니다. 그렇지 않습니다.

참조하십시오 .

여기에서 프로젝트에 아파치 라이브러리를 포함시키는 방법을 볼 수 있습니다

참조하십시오 .

두 번째 링크에서 권장하는대로 build.gradle 파일에 다음을 추가하여 문제를 해결했습니다.

android {
    useLibrary 'org.apache.http.legacy'
}

그러나 gradle 1.3.0-beta2 이상을 사용하는 경우에만 작동하므로 하위 버전 인 경우 빌드 스크립트 종속성에 추가해야합니다.

classpath 'com.android.tools.build:gradle:1.3.0-beta2'

도움이 되었기를 바랍니다.


답변

이 라이브러리를 build.gradle

 android {
      useLibrary 'org.apache.http.legacy'
 }


답변

사본 org.apache.http.legacy.jarAndroid/Sdk/platforms/android-23/optional폴더에app/libs

이 줄을 app.gradle 파일에 추가했습니다.

compile files('libs/org.apache.http.legacy.jar')

그러나 더 많은 jar 라이브러리를 사용하는 경우이 방법을 사용할 수 있습니다

compile fileTree(dir: 'libs', include: ['*.jar'])


답변

기본적으로 추가해야 할 것은 다음과 같습니다.

useLibrary  'org.apache.http.legacy'

당신에 build.gradle파일.


답변

나는 같은 문제에 부딪쳤다. Daniel Nugent의 답변은 약간의 도움이되었습니다 (자신의 조언 HttpResponse을 찾은 HttpClient후에도 여전히 누락되었습니다).

그래서 여기 나를 위해 고쳐진 것이 있습니다 :

  1. (아직 완료하지 않은 경우 이전의 수입 명세서를 칭찬하십시오)
  2. http://hc.apache.org/downloads.cgi를 방문하십시오 .
  3. 4.5.1.zip이진 섹션에서 가져옵니다
  4. 압축을 풀고 및 붙여 넣기 httpcore-4.4.3& httpclient-4.5.1.jarproject/libs폴더
  5. 항아리를 마우스 오른쪽 단추로 클릭하고 라이브러리로 추가를 선택 하십시오 .

도움이 되길 바랍니다.