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.
Vous pouvez utiliser ContentValues
, par exemple:
ContentValues values = new ContentValues();
values.put("username", name);
values.put("password", password);
database.insert(Table_name, null, values);
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));
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
}
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.
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();
}
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'