Estoy trabajando en mi primera aplicación de Android. Ahora lo que quiero hacer es hacer una solicitud POST a un servicio restfull ejecutándose en el servidor y quiero que el BODY de esta solicitud sea una cadena JSon.¿Cómo envío JSon como BODY en una solicitud POST al servidor desde una aplicación de Android?
Estoy usando GSon para generar el JSon para enviar al servidor. El código que estoy utilizando para hacer la solicitud POST sigue:
HttpPost requisicao = new HttpPost();
requisicao.setURI(new URI(uri));
requisicao.setHeader("User-Agent", sUserAgent);
requisicao.setHeader("Content-type", "application/json");
HttpResponse resposta = null;
//I can see the json correctly print on log with the following entry.
Log.d(TAG, "JSon String to send as body in this request ==>> " + jsonString);
//than I try to send JSon using setEntityMethod
StringEntity sEntity = new StringEntity(jsonString, "UTF-8");
requisicao.setEntity(sEntity);
resposta = httpClient.execute(requisicao);
resultado = HttpProxy.leRespostaServidor(resposta);
El código de respuesta es 400 Bad Request y desde el registro del servidor que puede leer la información. donde dice que el cuerpo no se ha enviado correctamente:
13:48:22,524 ERROR [SynchronousDispatcher] Failed executing POST /peso/cadastrar/[email protected]
org.jboss.resteasy.spi.BadRequestException: Could not find message body reader for type: class java.io.Reader of content type: application/json
El código del lado del servidor es un simple servicio de costura Resto:
@POST
@Path("/cadastrar/{userEmail}")
@Consumes(MediaType.APPLICATION_JSON)
public String cadastraPeso(@PathParam("userEmail") String email, Reader jsonString)
{
LineNumberReader lnr = new LineNumberReader(jsonString);
try {
String json = lnr.readLine();
if(json != null)
{
log.debug("String json recebida do device ==>> " + json);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "OK - o e-mail processado foi ==>> " + email;
}
¿Qué podría estar mal con el código de cliente de Android? Investigué la web y no encontré información realmente útil sobre este tema.
[] s
Good Marcos. Dentro de dos días, marque su propia respuesta como aceptada –
Hola Arthur, tengo que decirte que todavía estoy un poco perdido al usar desbordamiento de pila. Como principiante, me parece que hay demasiada información, quiero decir, todos los mecanismos sobre estos puntos, comentarios, publicaciones, ya que la primera impresión parece confundir un poco estos foros, pero encontré mucha información utilizándolo así que espero ser utilizado rápido. –
Me complace que encuentre útil este sitio, pero acepte su propia respuesta como respuesta aceptada haciendo clic en el icono debajo de la flecha hacia abajo. Se resaltará en verde cuando el mouse esté sobre él. –