web-dev-qa-db-fra.com

NameValuePair obsolète pour openConnection

J'ai suivi des tutoriels en ligne sur la façon d'insérer des données dans une base de données à partir d'une Android) et tout fonctionne sauf cette petite partie

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));

NameValuePair et BasicNameValuePair sont déconseillés en faveur de openConnection(). Comment créer une association nouvelle-valeur avec cela? http://developer.Android.com/reference/Java/net/URL.html#openConnection ()

Est-ce que quelqu'un sait comment je peux créer des paires nom-valeur avec openConnection? J'ai cherché partout.

29
user1949387

Vous pouvez utiliser ContentValues, par exemple:

ContentValues values = new ContentValues();
values.put("username", name);
values.put("password", password);
database.insert(Table_name, null, values);
28
Menna-Allah Sami

Je viens de rencontrer le même problème. Les classes obsolètes de org.Apache.http ont été supprimés dans l'API 23.

J'ai fini par utiliser Android.util.Pair. Cela fonctionne parfaitement et le code est aussi plus court:

List<Pair<String, String>> params = new ArrayList<>();
params.add(new Pair<>("username", username));
params.add(new Pair<>("password", password));
43
friederbluemle

Remplacez NameValuePair. Vous pouvez également obtenir le nom et les valeurs mentionnés ci-dessous. Ici, la clé est un nom.

Créer:

ContentValues values = new ContentValues();
values.put("key1", "value1");
values.put("key2", "value2");

Obtenir la clé et la valeur:

for (Map.Entry<String, Object> entry : values.valueSet()) {
    String key = entry.getKey(); // name
    String value = entry.getValue().toString(); // value
}
6
Fahim

Vous pouvez utiliser le fichier httpmime.jar à la place, ce qui fonctionnera mieux que NameValuePair. Vous pouvez le télécharger ici, Télécharger

MultipartEntity multi = new MultipartEntity();
multi.addPart("name", new StringBody("Raj"));
multi.addPart("Id", new StringBody("011"));

ajoutez ce pot à votre projet, puis utilisez-le.

1
Dipankar Baghel

vous pouvez utiliser contentvalues ​​ou hashmap en fonction de vos préférences.

j'ai utilisé des valeurs de contenu

ContentValues contentValues = new ContentValues();
contentValues.put("key1","value1");
contentValues.put("key2","value2");

et si les données que vous publiez sont des données de formulaire, voici comment vous pouvez les convertir.

 public String getFormData(ContentValues contentValues) throws UnsupportedEncodingException {

    StringBuilder sb = new StringBuilder();
    boolean first = true;
    for (Map.Entry<String, Object> entry : contentValues.valueSet()) {
        if (first)
            first = false;
        else
            sb.append("&");

        sb.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        sb.append("=");
        sb.append(URLEncoder.encode(entry.getValue().toString(), "UTF-8"));
    }
    return sb.toString();
}
1
ked

Si vous voulez vraiment utiliser NameValuePair dans votre application, vous pouvez ajouter le useLibrary 'org.Apache.http.legacy' À votre titre:

buildtypes{
    //------------
    //----------
}

useLibrary 'org.Apache.http.legacy'
1
thilina c