user1949387
user1949387

Reputation: 1275

NameValuePair deprecated for openConnection

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

Answers (7)

Menna-Allah Sami
Menna-Allah Sami

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

ked
ked

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

Thilina H
Thilina H

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

friederbluemle
friederbluemle

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

Fahim
Fahim

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

Dipankar Baghel
Dipankar Baghel

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

Ahmad Hasan
Ahmad Hasan

Reputation: 1

Yo can change your android Api in 21, right click, properties android, click in api 21 is work for me

Upvotes: -46

Related Questions