IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

probléme cannoty resolve symbole "httpclient ,namevaluepaire,httpentity,httpresponse,.etc


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 56
    Points : 29
    Points
    29
    Par défaut probléme cannoty resolve symbole "httpclient ,namevaluepaire,httpentity,httpresponse,.etc
    bnjr ; j'ai un probleme cannot resolve tte les importes httpclient et NameValuePair avec android studio 1.0.1 , alors après les recherches j'ai trouver que j doi utiliser la librairie ""org.apache.http.legacy"" mais j'ai toujours le problème , alors svp quelqu'un a la solution pour cela ...merci a l’avance

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    Les classe HttpClient et NameValuePair sont des classes de la librairie Apache httpclient.

    Or d'après ce que je vois elle ne fait pas partie des API standards sur Android.

    Apparemment il est d'usage d'utiliser HttpURLConnection à la place.

    Cdt.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Nico02 Voir le message
    Salut,

    Les classe HttpClient et NameValuePair sont des classes de la librairie Apache httpclient.

    Or d'après ce que je vois elle ne fait pas partie des API standards sur Android.

    Apparemment il est d'usage d'utiliser HttpURLConnection à la place.

    Cdt.
    merci pour la reponse mais j'ai aucune idée comment utiliser HttpURLConnection et comment changer mon code suivan

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
     import android.annotation.TargetApi;
    import android.app.Activity;
    import android.os.Build;
    import android.os.Bundle;
    import android.os.StrictMode;
    import android.util.Log;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import 
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    /**
     * Created by user on 14/02/2016.
     */
    public class affiche extends Activity {
        TextView txt;
        @TargetApi(Build.VERSION_CODES.GINGERBREAD)
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.affiche);
     
     
     
     
                LinearLayout rootLayout = new LinearLayout(getApplicationContext());
                txt = new TextView(getApplicationContext());
                rootLayout.addView(txt);
                setContentView(rootLayout);
     
                // Définir le texte et appeler la fonction de connexion.
                txt.setText("Connexion...");
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
                // Appeler la méthode pour récupérer les données JSON
                txt.setText(getServerData(strURL));
            }
     
            // Mettre l'adresse du script PHP
            // Attention localhost ou 127.0.0.1 ne fonctionnent pas. Mettre l'adresse IP local.
            public static final String strURL = "http://192.168. .  /get_all_product.php";
     
        private String getServerData(String returnString) {
            InputStream is = null;
            String result = "";
            // Envoyer la requête au script PHP.
            // Script PHP : $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
            // $_REQUEST['ville'] sera remplacé par L dans notre exemple.
            // Ce qui veut dire que la requête enverra les villes commençant par la lettre L/
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("ID","NAME"));
     
            // Envoie de la commande http
            try{
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(strURL);
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
     
            }catch(Exception e){
                Log.e("log_tag", "Error in http connection " + e.toString());
            }
     
            // Convertion de la requête en string
            try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                result=sb.toString();
            }catch(Exception e){
                Log.e("log_tag", "Error converting result " + e.toString());
            }
            // Parse les données JSON
            try{
                JSONArray jArray = new JSONArray(result);
                for(int i=0;i<jArray.length();i++){
                    JSONObject json_data = jArray.getJSONObject(i);
                    // Affichage ID_ville et Nom_ville dans le LogCat
     
      Log.i("log_tag","Identifiant: "+json_data.getInt("ID")+  ", Nom: "+json_data.getString("NAME")
                    );
                    // Résultats de la requête
                    returnString += "\n\t" + jArray.getJSONObject(i);
                }
            }catch(JSONException e){
                Log.e("log_tag", "Error parsing data " + e.toString());
            }
            return returnString;
        }
    }
    merci

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Ce forum est un forum d'entraide sur le développement, et cette section plus spécifiquement concernant Android.

    Ce forum n'a pas une utilité de réaliser tes exercices ou ton travail.

    Le code que tu tentes d'utiliser n'est pas adapté pour Android (pas de Apache Commons nativement).

    Si tu as des problèmes dans l'adaptation, nous serons heureux de t'aider. Par contre, nous ne ferons pas cette adaptation à ta place.
    Je te suggère donc de lire les différentes documentations (des classes à remplacer et de HttpUrlConnection) pour voir les changements à réaliser.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Ce forum est un forum d'entraide sur le développement, et cette section plus spécifiquement concernant Android.

    Ce forum n'a pas une utilité de réaliser tes exercices ou ton travail.

    Le code que tu tentes d'utiliser n'est pas adapté pour Android (pas de Apache Commons nativement).

    Si tu as des problèmes dans l'adaptation, nous serons heureux de t'aider. Par contre, nous ne ferons pas cette adaptation à ta place.
    Je te suggère donc de lire les différentes documentations (des classes à remplacer et de HttpUrlConnection) pour voir les changements à réaliser.
    jai pa d tt demander de faire le travaille a ma place j cherche qu'un peut d'orientation c tt , j ss debutante et j vien ver vous les développeurs qui ont d l experience pour un simple aide et si c moi s sera avc plaisir de partager mes connaissance mais j'ai pas demander de creer l'application que j doi faire moi , si j ss pas bloqué je me permet pas de poser ma quest ici et biensur apré des recherche par ci par la ...........et MERCI

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Salut !

    En faint HttpClient et tout le toutim est bien présent dans Android mais avant 6.0.

    L'interface était déjà "deprecated", elle n'existe plus par défaut sous 6.0, mais il est toutefois possible de la "ramener" : http://developer.android.com/about/v...he-http-client


    Maintenant, de toute manière, vu l'état du code, c'est pas la peine d'essayer d'importer HttpClient, il vaut largement partir proprement sur une HttpUrlConnection.


    Quand je parle de "l'état du code" je veux faire référence à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @TargetApi(Build.VERSION_CODES.GINGERBREAD)
     
    ....
     
     
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
    Ces lignes disent grosso modo:
    * Mon code va faire un truc interdit et très très sale.
    * Mais je ne veux pas que tu râles à ce sujet, je sais ce que je fais, et j'ai envie que ce soit horrible.

    Ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    txt.setText(getServerData(strURL));
    Non... on ne récupère pas les données d'un serveur distant dans le thread UI. C'est d'ailleurs pour empêcher le système de râler à ce sujet que les lignes précédentes ont probablement été rajoutées.

    Je ne parle même pas de la fonction getServerData qui fait n'importe quoi niveau exceptions....



    Tu peux t'inspirer des deux articles de mon blog sur comment récupérer des données d'un serveur distant de manière correcte:
    http://www.developpez.net/forums/blo...vice-partie-1/
    http://www.developpez.net/forums/blo...vice-partie-2/


    Quant à l'utilisation de HttpUrlConnection elle est assez simple (modulo la gestion de fermeture des streams et du charset):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    private static final URL SERVICE_URL = new URL("http://192.168. .  /get_all_product.php"); // <= PRIVATE !! et directement URL !
     
    public String getServerData()
    {
       HttpURLConnection connection = (HttpURLConnection ) SERVICE_URL.openConnection();
       try {
            int rcode = connection.getResponseCode();
            if (rcode == 200) {
                BufferedInputStream is = new BufferedInputStream(connection.getInputStream());
                StringBuilder builder = new StringBuilder();
                byte[] buffer = new byte[1024];
                int c;
                while ((c = is.read(buffer)) != -1) 
                     builder.append(new String(buffer,0,c));
                is.close();
                return builder.toString();
            } else
                // gestion de l'erreur ????
       } catch (Exception ex) {
           Log.e(TAG,"getServerData error",ex);  // <= normalement on ne catch pas l'erreur, elle doit être interessante pour le parent à priori !
           return null;
       } finally {
           connection.disconnect();
       }
    }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Problème avec le package commons-httpclient-3.0.1
    Par kannar dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 04/09/2006, 16h39
  2. [Wamp] Problème d'insertion avec quote d'un formulaire
    Par cyberdevelopment dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/08/2006, 18h55
  3. Problème XML et symbole
    Par Marty000 dans le forum Modules
    Réponses: 2
    Dernier message: 21/05/2006, 21h24
  4. [SQL-Server] Problèmes de guillemets et quotes dans un INSERT
    Par gregb34 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/05/2006, 09h40
  5. [setParameter]cannot resolve symbole
    Par DEC dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 07/07/2004, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo