Ich arbeite an meiner ersten Android-Anwendung. Nun, was ich tun möchte, ist eine POST-Anfrage an einen Restfull-Service auf dem Server zu machen und ich möchte, dass der BODY dieser Anfrage ein JSon String ist.Wie sende ich JSon als BODY in einer POST-Anfrage an den Server von einer Android-Anwendung?
Ich verwende GSon, um den JSon zu generieren, der an den Server gesendet wird. Der Code Ich bin mit der POST-Anforderung machen folgt:
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);
Der Antwortcode 400 BAD REQUEST und vom Server-Protokoll kann ich die Info lesen.
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
Der Code für die Server-Seite ist ein einfacher Naht Rast Service::
mit dem Android-Client-Code@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;
}
Was könnte falsch sein, wo es heißt wurde der Körper nicht richtig gesendet? Ich habe im Web recherchiert und keine wirklich nützliche Information zu diesem Thema gefunden.
[] s
Gute Marcos. In zwei Tagen, markieren Sie Ihre eigene Antwort als akzeptiert –
Hallo Arthur, ich muss Ihnen sagen, ich bin immer noch ein wenig verloren mit Stack-Überlauf. Als Starter sieht es zu viele Informationen für mich aus, ich meine, all die Mekaniker zu diesen Punkten, Kommentaren, Posts, da ein erster Eindruck diese Foren ein wenig verwirrend wirkt, aber ich habe tolle Informationen damit gefunden, also hoffe ich mich daran gewöhnen zu können schnell. –
Ich bin froh, dass Sie diese Seite nützlich finden, aber akzeptieren Sie Ihre eigene Antwort als akzeptierte Antwort, indem Sie auf das Symbol unter dem Pfeil nach unten klicken. Es wird als grün markiert, wenn sich die Maus darüber befindet. –