Reputation: 1275
I been following online tutorials on how to insert data into a database from an android app and have everything working except this small part
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));
NameValuePair and BasicNameValuePair have been deprecated in favor of openConnection()
. How can I create a new-value association with that? http://developer.android.com/reference/java/net/URL.html#openConnection()
Does anyone know how I can create name value pairs with openConnection? I been searching everywhere.
Upvotes: 33
Views: 55276
Reputation: 580
You can use ContentValues
, for example:
ContentValues values = new ContentValues();
values.put("username", name);
values.put("password", password);
database.insert(Table_name, null, values);
Upvotes: 32
Reputation: 2456
you can use contentvalues or hashmap based on your preference.
i have used Content values
ContentValues contentValues = new ContentValues();
contentValues.put("key1","value1");
contentValues.put("key2","value2");
and if the data that u are posting is form data then here`s how u can convert it form data
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();
}
Upvotes: 2
Reputation: 217
If you realy want to use NameValuePair
in your application, you can add the useLibrary 'org.apache.http.legacy'
to your gradle:
buildtypes{
//------------
//----------
}
useLibrary 'org.apache.http.legacy'
Upvotes: 1
Reputation: 36967
I just ran into the same problem. The deprecated classes from org.apache.http
have been removed in API 23
.
I ended up using android.util.Pair
. It works perfectly, and the code is shorter too:
List<Pair<String, String>> params = new ArrayList<>();
params.add(new Pair<>("username", username));
params.add(new Pair<>("password", password));
Upvotes: 45
Reputation: 12358
Alternate to NameValuePair. Also you can get the name and values from it as mentioned below. Here key isa name.
Create:
ContentValues values = new ContentValues();
values.put("key1", "value1");
values.put("key2", "value2");
Get key and value :
for (Map.Entry<String, Object> entry : values.valueSet()) {
String key = entry.getKey(); // name
String value = entry.getValue().toString(); // value
}
Upvotes: 7
Reputation: 2039
You can use httpmime.jar file instead of it, which will work better that NameValuePair. You can Download it from here, Download
MultipartEntity multi = new MultipartEntity();
multi.addPart("name", new StringBody("Raj"));
multi.addPart("Id", new StringBody("011"));
add this jar to your project and then use it.
Upvotes: 1
Reputation: 1
Yo can change your android Api in 21, right click, properties android, click in api 21 is work for me
Upvotes: -46