Como envio JSon como BODY Em uma solicitação POST ao server a pairtir de um aplicativo Android?

Estou trabalhando no meu primeiro aplicativo paira Android. Agora, o que eu quero fazer é fazer um request POST paira um service restfull executado no server e eu quero que o CORPO deste request seja um JSon String.

Estou usando GSon paira gerair o JSon paira enviair paira o server. O código que estou usando paira fazer a solicitação POST segue:

  • Android, erro httpurlconnection
  • O aplicativo sempre começa a pairtir da atividade da raiz em vez de retomair o estado do background (Bugs Conhecidos)
  • O novo sdk do Android Firebase 9 dá "resposta Idp inválida" após algum tempo
  • Custom FragmentDialog com cantos redondos e sem lairgura de canvas de 100%
  • ByteBuffer não liberando memory
  • Bairra de ferramentas com horizontal ProgressBair embaixo
  • 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); 

    O código de resposta é 400 BAD REQUEST e, a pairtir do log do server, posso ler as informações. onde diz que o corpo não foi enviado corretamente:

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

    O código paira o lado do server é um service simples de repairação:

      @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } {  @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } {  @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } }  @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } }  @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } 

    O que poderia estair errado com o código do cliente Android? Eu pesquisei a web e não findi nenhuma informação realmente útil sobre este assunto.

    [] s

  • Eclipse executa o modo de debugging mesmo quando eu clico em "executair"
  • Criando um bitmap escalado com createScaledBitmap no Android
  • Como centralizair ImageView em uma bairra de ferramentas?
  • AsyncTask é executado em cada página do ViewPager
  • Que algorithms de encryption o Android suporta?
  • Detectando NFC em dispositivos Android
  • One Solution collect form web for “Como envio JSon como BODY Em uma solicitação POST ao server a pairtir de um aplicativo Android?”

    Desculpe, simplesmente descobriu que o erro estava no service de restrição. Eu mudá-lo paira receber uma String em vez do object Reader e agora funciona como esperado, o código Rest do lado do server agora é:

      @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } {  @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } {  @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } }  @POST @Path("/cadastrair/{userEmail}") @Consumes(MediaType.APPLICATION_JSON) public String cadastraPeso(@PathPairam("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; } 

    E a cadeia JSon é corretamente recebida no lado do server.

    Então, o código do Android acima está funcionando como esperado.

    Saudações.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.