web-dev-qa-db-fra.com

Impossible de résoudre le symbole HttpGet, HttpClient, HttpResponce dans Android Studio

Je copie juste tous les fichiers jar de Http mais Android Studio ne peut pas importer tous ces fichiers jar. Il donne une erreur: Cannot resolve symbol HttpGet,HttpClient,HttpResponse.

Mon fichier Activity est ici: -

public class MainActivity extends AppCompatActivity {

ArrayList<Product>  productslist;
ProductAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    productslist = new ArrayList<Product>();
    new JSONAsyncTask().execute("http://opencart.codeniques.com/myshop/?route=feed/web_api/products&id=60&key=test123");

    ListView listView = (ListView)findViewById(R.id.list);
    adapter = new ProductAdapter(getApplicationContext(),R.layout.row,productslist);

    listView.setAdapter(adapter);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getApplicationContext(),productslist.get(position).getName(),Toast.LENGTH_LONG).show();
        }
    });
}

class JSONAsyncTask extends AsyncTask<String,Void,Boolean>{

    ProgressDialog dialog;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        dialog = new ProgressDialog(MainActivity.this);
        dialog.setMessage("Loading, please wait");
        dialog.setTitle("Connecting server");
        dialog.show();
        dialog.setCancelable(false);
    }

    @Override
    protected Boolean doInBackground(String... params) {
        try{
            HttpGet httppost = new HttpGet(params[0]);
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response = httpclient.execute(httppost);

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

            if(status == 200){
                HttpEntity entity = response.getEntity();
                String data = EntityUtils.toString(entity);

                JSONObject jsono = new JSONObject(data);
                JSONArray jarray = jsono.getJSONArray("products");

                for (int i = 0; i < jarray.length(); i++) {
                    JSONObject object = jarray.getJSONObject(i);

                    Product actor = new Product();

                    actor.setId(object.getString("id"));
                    actor.setName(object.getString("name"));
                    actor.setDescription(object.getString("description"));
                    actor.setHref(object.getString("href"));
                    actor.setPrice(object.getString("pirce"));
                    actor.setImage(object.getString("thumb"));
                    actor.setSpecial(object.getString("special"));
                    actor.setRating(object.getString("rating"));

                    productslist.add(actor);
            }
                return  true;
            }
        }catch (JSONException e){
            Log.e("Error :",e.getMessage());
        }catch (ParseException e){
            Log.e("Error :",e.getMessage());
        }catch (IOException e){
            Log.e("Error :",e.getMessage());
        }catch (Exception e){
            Log.e("Error :",e.getMessage());
        }
        return  false;
    }
    @Override
    protected void onPostExecute(Boolean aBoolean) {
        dialog.cancel();
        adapter.notifyDataSetChanged();
        if(aBoolean == false){
            Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show();
        }
    }
}}

et voici ma gradle est ici: -

apply plugin: 'com.Android.application'
Android {
compileSdkVersion 23
buildToolsVersion "22.0.1"

defaultConfig {
    applicationId "Android.catalyst.com.newjsonarray"
    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'])

testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.0.1'
compile 'com.Android.support:design:23.0.1'}
49
Anand Jain

Ajoutez simplement ceci dans vos dépendances

compile 'org.Apache.httpcomponents:httpcore:4.4.1'
compile 'org.Apache.httpcomponents:httpclient:4.5'

Finalement 

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])    
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.0.1'
compile 'com.Android.support:design:23.0.1'
compile 'org.Apache.httpcomponents:httpcore:4.4.1'
compile 'org.Apache.httpcomponents:httpclient:4.5'
}

Et ajoutez aussi ce code:

 Android {
    useLibrary 'org.Apache.http.legacy'
         }

FYI

Spécifiez la configuration requise pour la bibliothèque Apache HTTP Legacy Si votre application est API de ciblage de niveau 28 (Android 9.0) ou supérieur, vous devez inclure le déclaration suivante dans l’élément de AndroidManifest.xml.

 <uses-library
      Android:name="org.Apache.http.legacy"
      Android:required="false" />
94
IntelliJ Amiya

HttpClient n'est plus pris en charge dans sdk 23. Vous devez utiliser URLConnection ou rétrograder à sdk 22 (compiler 'com.Android.support:appcompat-v7:22.2.0')

Si vous avez besoin du sdk 23, ajoutez ceci à votre diplôme:

Dans les dépendances, ajoutez:

compile 'org.Apache.httpcomponents:httpcore:4.4.1'
compile 'org.Apache.httpcomponents:httpclient:4.5'

et aussi ajouter ceci

Android {
    useLibrary 'org.Apache.http.legacy'
}
35
Sanju

HttpClient était obsolète dans l'API niveau 22 et supprimé dans l'API niveau 23 . Vous devez utiliserURLConnection.

12
TheSecond

Veuillez supprimer tous les fichiers jar de Http du dossier libs et ajouter les dépendances ci-dessous dans le fichier gradle:

compile 'org.Apache.httpcomponents:httpclient:4.5'
compile 'org.Apache.httpcomponents:httpcore:4.4.3'

Merci.

4
AndiGeeky

veuillez ajouter ces codes à vos dépendances. Ça va marcher.

implementation 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.Apache.http.client:4.1.2'
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    implementation 'com.Android.support:appcompat-v7:23.1.0'
    implementation 'com.Android.support:design:23.1.0'
    implementation 'com.Android.support:cardview-v7:23.1.0'
    implementation 'com.Android.support:recyclerview-v7:23.1.0'

    implementation 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.Apache.http.client:4.1.2'
}
4
Rahul K A

Google suggère officiellement aux développeurs d’utiliser la bibliothèque Volley pour la gestion de réseau Ici , Alors il est temps de passer à Volley, Happy coding

1
Avinash Sharma

Supprimez tous les fichiers jar de Http du dossier 'libs' et ajoutez les dépendances suivantes dans le fichier gradle:

compile 'org.Apache.httpcomponents:httpclient:4.5'
compile 'org.Apache.httpcomponents:httpcore:4.4.3'

ou 

useLibrary 'org.Apache.http.legacy'
1
Qaisar Ayub

C’est juste dans le SDK 23, Httpclient et d’autres sont obsolètes. Vous pouvez le corriger en changeant la version du SDK cible comme ci-dessous:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "vahid.hoseini.com.testclient"
        minSdkVersion 10
        targetSdkVersion 22
        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:22.1.1'
}
0
HPbyP

Pour moi, le dessous a aidé

Trouvez org.Apache.http.legacy.jar qui est dans Android/Sdk/platforms/Android-23/optional, ajoutez-le à votre dépendance.

La source

0
Atul O Holic

Vous venez de reconstruire votre projet

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

en ajoutant cela a fonctionné pour moi. 

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.Apache.http.client:4.1.2'
0
Gomez NL