[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.jar
에Android/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
후에도 여전히 누락되었습니다).
그래서 여기 나를 위해 고쳐진 것이 있습니다 :
- (아직 완료하지 않은 경우 이전의 수입 명세서를 칭찬하십시오)
- http://hc.apache.org/downloads.cgi를 방문하십시오 .
4.5.1.zip
이진 섹션에서 가져옵니다- 압축을 풀고 및 붙여 넣기
httpcore-4.4.3
&httpclient-4.5.1.jar
의project/libs
폴더 - 항아리를 마우스 오른쪽 단추로 클릭하고 라이브러리로 추가를 선택 하십시오 .
도움이 되길 바랍니다.