sobre - imagenes java eclipse
NameValuePair en desuso para openConnection (7)
Acabo de encontrarme con el mismo problema. Las clases en desuso de org.apache.http
se han eliminado en la API 23
.
Terminé usando android.util.Pair
. Funciona perfectamente, y el código es más corto también:
List<Pair<String, String>> params = new ArrayList<>();
params.add(new Pair<>("username", username));
params.add(new Pair<>("password", password));
He estado siguiendo tutoriales en línea sobre cómo insertar datos en una base de datos desde una aplicación de Android y hacer que todo funcione, excepto esta pequeña parte.
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));
NameValuePair y BasicNameValuePair han quedado en desuso en favor de openConnection()
. ¿Cómo puedo crear una asociación de nuevo valor con eso? http://developer.android.com/reference/java/net/URL.html#openConnection()
¿Alguien sabe cómo puedo crear pares de valores de nombre con openConnection? He estado buscando en todas partes.
Alternativo a NameValuePair. También puede obtener el nombre y los valores de la misma como se menciona a continuación. Aquí la clave es un nombre.
Crear:
ContentValues values = new ContentValues();
values.put("key1", "value1");
values.put("key2", "value2");
Obtener clave y valor:
for (Map.Entry<String, Object> entry : values.valueSet()) {
String key = entry.getKey(); // name
String value = entry.getValue().toString(); // value
}
Puede usar el archivo httpmime.jar en lugar de él, lo que funcionará mejor que NameValuePair. Puedes descargarlo desde aquí, Download
MultipartEntity multi = new MultipartEntity();
multi.addPart("name", new StringBody("Raj"));
multi.addPart("Id", new StringBody("011"));
agregue este jar a su proyecto y luego úselo.
Puedes usar ContentValues
, por ejemplo:
ContentValues values = new ContentValues();
values.put("username", name);
values.put("password", password);
database.insert(Table_name, null, values);
Puedo cambiar tu Api de Android en 21, haga clic con el botón derecho, propiedades de Android, haga clic en Api 21 es un trabajo para mí
Si realmente desea utilizar NameValuePair
en su aplicación, puede agregar el useLibrary ''org.apache.http.legacy''
a su gradle:
buildtypes{
//------------
//----------
}
useLibrary ''org.apache.http.legacy''
puede usar contentvalues o hashmap según su preferencia.
He usado valores de contenido
ContentValues contentValues = new ContentValues();
contentValues.put("key1","value1");
contentValues.put("key2","value2");
y si los datos que estás publicando son datos de formulario, aquí puedes convertirlos a partir de datos
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();
}