Estoy tratando de descubrir cómo PUBLICAR JSON desde Android usando HTTPClient. He estado tratando de resolver esto por un tiempo, he encontrado muchos ejemplos en línea, pero no puedo hacer que ninguno funcione. Creo que esto se debe a mi falta de conocimiento de JSON / redes en general. Sé que hay muchos ejemplos, pero ¿alguien podría indicarme un tutorial real? Estoy buscando un proceso paso a paso con código y una explicación de por qué hace cada paso, o de lo que hace ese paso. No es necesario que sea complicado, será suficiente.
Una vez más, sé que hay un montón de ejemplos por ahí, realmente estoy buscando un ejemplo con una explicación de lo que está sucediendo exactamente y por qué está sucediendo de esa manera.
Si alguien conoce un buen libro de Android sobre esto, hágamelo saber.
Gracias nuevamente por la ayuda @terrance, aquí está el código que describí a continuación
public void shNameVerParams() throws Exception{
String path = //removed
HashMap params = new HashMap();
params.put(new String("Name"), "Value");
params.put(new String("Name"), "Value");
try {
HttpClient.SendHttpPost(path, params);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
fuente
Respuestas:
En esta respuesta, estoy usando un ejemplo publicado por Justin Grammens .
Sobre JSON
JSON son las siglas de JavaScript Object Notation. En JavaScript, las propiedades pueden ser referenciadas tanto así
object1.name
como asíobject['name'];
. El ejemplo del artículo usa este bit de JSON.El
objeto de ventilador Parts A con el correo electrónico como clave y [email protected] como valor
Entonces, el objeto equivalente sería
fan.email;
ofan['email'];
. Ambos tendrían el mismo valor de'[email protected]'
.Acerca de la solicitud de HttpClient
Lo siguiente es lo que usó nuestro autor para realizar una solicitud HttpClient . No pretendo ser un experto en todo esto, así que si alguien tiene una mejor manera de expresar algo de la terminología, no dude en hacerlo.
Mapa
Si no está familiarizado con la
Map
estructura de datos, consulte la referencia de Java Map . En resumen, un mapa es similar a un diccionario o un hash.Siéntase libre de comentar cualquier pregunta que surja sobre esta publicación o si no he dejado algo claro o si no he tocado algo sobre lo que todavía está confundido ... etc., lo que sea que realmente se le ocurra.
(Eliminaré si Justin Grammens no lo aprueba. Pero si no, gracias a Justin por ser genial al respecto).
Actualizar
Acabo de recibir un comentario sobre cómo usar el código y me di cuenta de que había un error en el tipo de devolución. La firma del método se configuró para devolver una cadena, pero en este caso no devolvía nada. Cambié la firma a HttpResponse y lo referiré a este enlace sobre Cómo obtener el cuerpo de respuesta de HttpResponse, la variable de ruta es la URL y la actualicé para corregir un error en el código.
fuente
getJsonObjectFromMap()
: JSONObject tiene un constructor que tomaMap
: developer.android.com/reference/org/json/…Aquí hay una solución alternativa a la respuesta de @ Terrance. Puede subcontratar fácilmente la conversión. La biblioteca Gson hace un trabajo maravilloso al convertir varias estructuras de datos en JSON y al revés.
Se puede hacer algo similar usando Jackson en lugar de Gson. También recomiendo echar un vistazo a Retrofit, que oculta gran parte de este código repetitivo para usted. Para los desarrolladores más experimentados, recomiendo probar RxAndroid .
fuente
execute()
y, por supuesto, ha falladoRecomiendo usar esto
HttpURLConnection
en su lugarHttpGet
. ComoHttpGet
ya está obsoleto en el nivel 22 de API de Android.fuente
Demasiado código para esta tarea, consulte esta biblioteca https://github.com/kodart/Httpzoid Is usa GSON internamente y proporciona una API que funciona con objetos. Todos los detalles JSON están ocultos.
fuente
Hay un par de formas de establecer una conexión HHTP y obtener datos de un servicio web RESTFULL. El más reciente es GSON. Pero antes de continuar con GSON, debe tener una idea de la forma más tradicional de crear un cliente HTTP y realizar la comunicación de datos con un servidor remoto. He mencionado ambos métodos para enviar solicitudes POST y GET usando HTTPClient.
fuente