Android Cannot access org.apache.http.client.HttpClient

I am using Android studio to create an application that makes a GET request to the server. My code is:

import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGetHC4; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; public class HTTPHelper { private String base; public HTTPHelper (String base) { this.base = base; } public String doGet (String path) { try { CloseableHttpClient client = HttpClientBuilder.create().build(); HttpGetHC4 get = new HttpGetHC4(path); CloseableHttpResponse response = client.execute(get); return ""; } catch (Exception e) { return null; } } } 

Android Studio is supposed to mark a line

 client.execute(get); 

with an error:

enter image description here

"Cannot access org.apache.http.client.HttpClient"

Here is my gradle file:

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.0" defaultConfig { applicationId "principal.halloween" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.0.0' compile 'com.pubnub:pubnub-android:3.7.5' compile 'com.google.code.gson:gson:2.3.1' compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' compile 'org.apache.httpcomponents:httpclient:4.3.6' } 
+5
source share
2 answers

Android SDK 23

HttpClient is deprecated because it concludes you can port your code to HttpURLConnection

https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

You can use this, but it is no longer recommended.

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

For HttpURLConnection

 URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.setDoInput(true); connection.connect(); 
+4
source

This is because HttpClient is not supported in sdk 23 now. Try adding this to gradle.

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

If this does not work, just download the httpClient jar file and add to your library.

If it still doesn't work, you need to downgrade compileSdkVersion to 22 or lower.

-1
source

Source: https://habr.com/ru/post/1233012/


All Articles