Как отправить JSon как BODY В запросе POST на сервер из приложения Android?

Я работаю над своим первым Android-приложением. Теперь ват, который я хочу сделать, это сделать запрос POST для службы restfull, запущенной на сервере, и я хочу, чтобы BODY этого запроса был JSon String.

Я использую GSon для генерации JSon для отправки на сервер. Код, который я использую, чтобы выполнить запрос POST:

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); 

Код ответа 400 BAD REQUEST, и из журнала сервера я могу прочитать информацию. Где говорится, что тело неправильно отправлено:

 13:48:22,524 ERROR [SynchronousDispatcher] Failed executing POST /peso/cadastrar/maia.marcos@gmail.com org.jboss.resteasy.spi.BadRequestException: Could not find message body reader for type: class java.io.Reader of content type: application/json 

Код для серверной части – это простая служба Rest Seam Rest Service:

  @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; } 

Что может быть неправильным с кодом клиента Android? Я исследовал Интернет и не нашел действительно полезной информации по этому вопросу.

[] S

Solutions Collecting From Web of "Как отправить JSon как BODY В запросе POST на сервер из приложения Android?"

Извините, ребята, только что оказалось, что ошибка была в службе Rest. Я изменил его, чтобы получить String вместо объекта Reader, и теперь он работает так, как ожидалось, код Rest на стороне сервера теперь:

  @POST @Path("/cadastrar/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathParam("userEmail") String email, String jsonString) { String json = jsonString; if(json != null) { log.debug("String json recebida do device ==>> " + json); } return "OK - o e-mail processado foi ==>> " + email; } 

И строка JSon правильно принимается на стороне сервера.

Таким образом, код Android над ним работает как ожидалось.

С уважением.