ИмяValuePair устарело для openConnection

Я следил за онлайн-учебниками о том, как вставлять данные в базу данных из приложения Android и иметь все, кроме этой небольшой части

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

NameValuePair и BasicNameValuePair устарели в пользу openConnection(). Как я могу создать связь нового значения с этим? http://developer.android.com/reference/java/net/URL.html#openConnection()

Кто-нибудь знает, как я могу создавать пары значений имени с помощью openConnection? Я искал везде.

Ответ 1

Вы можете использовать contentValues, например

ContentValues values=new ContentValues();
values.put("username",name);
values.put("password",password);
database.insert(Table_name,null,values);

Ответ 2

Я столкнулся с одной и той же проблемой. Устаревшие классы из org.apache.http были удалены в API 23.

В итоге я использовал android.util.Pair. Он отлично работает, и код также короче:

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

Ответ 3

Альтернатива NameValuePair. Также вы можете получить имя и значения из него, как указано ниже. Здесь ключевое имя isa.

Создать:

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

Получить ключ и значение:

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

Ответ 4

Вместо него вы можете использовать файл httpmime.jar, который будет работать лучше, чем NameValuePair. Вы можете скачать его здесь, Download

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

добавьте эту банку в свой проект, а затем используйте его.

Ответ 5

Если вы действительно хотите использовать NameValuePair в своем приложении, вы можете добавить useLibrary 'org.apache.http.legacy' в свой gradle:

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

useLibrary 'org.apache.http.legacy'

Ответ 6

вы можете использовать contentvalues ​​или hashmap в зависимости от ваших предпочтений.

я использовал значения содержимого

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

и если данные, которые вы публикуете, являются данными формы, то вот как вы можете преобразовать данные формы

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

Ответ 7

Yo может изменить ваш андроид Api в 21, щелчок правой кнопкой мыши, свойства android, щелчок в api 21 работает для меня