web-dev-qa-db-fra.com

Quelle est l'utilisation de List <NameValuePair> ou ArrayList <NameValuePair>

Je veux savoir quelle est l'utilisation de List<NameValuePair> ou ArrayList<NameValuePair> dans Android? Particulièrement lorsque nous utilisons des services Web en utilisant AsyncTask<...>

35
Zubair Ahmad Khan

NameValuePair est une paire spéciale <Key, Value> utilisée pour représenter les paramètres dans une requête http, à savoir www.example.com?key=value

NameValuePair est une interface définie dans le client HTTP Apache, largement utilisé en Java pour gérer les opérations http. Un List<NameValuePair> est simplement une liste de paires <key, value> et sera utilisé comme paramètre dans une requête de publication http.

HttpPost request = new HttpPost();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("key", "value"));
request.setEntity(new UrlEncodedFormEntity(params));

httpClient.execute(request);
54
faylon

Quelques trucs utiles pour vous.

List est une interface et ArrayList est une implémentation de l'interface List.

List: List est une interface dans la structure de collection. Plusieurs classes telles que ArrayList, LinkedList implémentent cette interface. List est une collection ordonnée, la position d'un objet est donc importante.

ArrayList: Une ArrayList est une classe qui peut évoluer à l'exécution. vous pouvez stocker des objets Java dans une ArrayList et en ajouter de nouveaux au moment de l'exécution.

Vous utiliserez ArrayList lorsque vous n'avez pas besoin d'ajouter ou de supprimer des objets fréquemment. Parce que lorsque vous supprimez un objet, tous les autres objets doivent être repositionnés dans la ArrayList. Si vous rencontrez ce genre de situation, essayez plutôt d'utiliser LinkedList.

Vous pouvez trouver plus d'informations à partir de ici .

12
Harshid

List<NameValuePair> ou ArrayList<NameValuePair> sont utilisés pour envoyer des valeurs de l'application Android au serveur.

@Override
    protected Header[] doInBackground(String... params) {
        try {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(params[1]);

            ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
            nameValuePair.add(new BasicNameValuePair("ssn", params[0]));
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair,
                    "UTF-8"));
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            response = EntityUtils.toString(httpEntity);
            allHeaders = httpResponse.getAllHeaders();

        } catch (Exception ex) {

            ex.printStackTrace();

        }
        return allHeaders;
    }

Dans le code ci-dessus, je passe un attribut ssn au serveur à l'aide de ArrayList<NameValuePair>

9
Anil M
protected String  doInBackground(String... params)
        {
            try
            {
                List<NameValuePair> param = new ArrayList<NameValuePair>();
            param.add(new BasicNameValuePair("username", edName));
            param.add(new BasicNameValuePair("email", edEmail));
            param.add(new BasicNameValuePair("password",  edPassword));
            param.add(new BasicNameValuePair("mobile", edMobile));


            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(params[0]);
            httpPost.setEntity(new UrlEncodedFormEntity(param));

            HttpResponse httpResponse = httpClient.execute(httpPost);

            HttpEntity httpEntity = httpResponse.getEntity();
            InputStream is = httpEntity.getContent();

            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");
            }

            String  json = sb.toString();
            JSONObject jObj = new JSONObject(json);
            msg= jObj.getString("message");
        }
        catch(Exception e)
        {

            Log.e("error", "Network problem");
        }
        return msg;

    }
}
0
divya prajapati

Utilisé ce code pour télécharger des données depuis une application Android sur le serveur.

  // image file *********************************
 // here send all the sqlite database datas to local sever via HttpPost("url"); 

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

nameValuePairs.add(new BasicNameValuePair("job_id","001"));
nameValuePairs.add(new BasicNameValuePair("picture_path",picturejson.toString()));
        nameValuePairs.add(new BasicNameValuePair("date_time",datetime_str));
        nameValuePairs.add(new BasicNameValuePair("location",gpslocation_str));
        try{

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://Sample/iphone/getinput");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        httpclient.execute(httppost);
        HttpResponse response = httpclient.execute(httppost);
        //HttpEntity entity = response.getEntity();
        //is = entity.getContent();
        //HttpResponse response = httpClient.execute(postRequest);
         BufferedReader reader = new BufferedReader(new InputStreamReader(
             response.getEntity().getContent(), "UTF-8"));
                        String sResponse;
                        StringBuilder s = new StringBuilder();

                        while ((sResponse = reader.readLine()) != null) {
                            s = s.append(sResponse);
                        }
                    System.out.println("Response: ");
                    Log.v("hari", "Response : ");
        }catch(Exception e){
        //Log.e("log_tag", "Error in http connection "+e.toString());

        }
0
harikrishnan