NameValuePair устарела для 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? Я искал везде.
7 ответов
Ты можешь использовать ContentValues
, например:
ContentValues values = new ContentValues();
values.put("username", name);
values.put("password", password);
database.insert(Table_name, null, values);
Я просто столкнулся с той же проблемой. Устаревшие классы от 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));
Альтернатива NameValuePair. Также вы можете получить имя и значения из него, как указано ниже. Здесь ключ это имя.
Создайте:
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
}
Вы можете использовать значения содержимого или 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();
}
Если вы действительно хотите использовать NameValuePair
в вашем приложении вы можете добавить useLibrary 'org.apache.http.legacy'
к твоему gradle:
buildtypes{
//------------
//----------
}
useLibrary 'org.apache.http.legacy'
Вместо него вы можете использовать файл httpmime.jar, который будет работать лучше, чем NameValuePair. Вы можете скачать его здесь, Скачать
MultipartEntity multi = new MultipartEntity();
multi.addPart("name", new StringBody("Raj"));
multi.addPart("Id", new StringBody("011"));
добавьте эту банку в ваш проект, а затем используйте ее.
Вы можете изменить свой Android Api в 21, щелкните правой кнопкой мыши, свойства Android, нажмите в API 21 это работа для меня