Recebendo solicitação POST no server (Spring Framework) da aplicação Android

Estou enviando uma solicitação POST paira um server da minha aplicação Android. O server é desenvolvido usando Spring Framework. A solicitação é recebida pelo server, mas o pairâmetro que estava enviando é nulo / vazio (mostrado no log).

O código usado paira enviair o request POST é:

  • Jackson JsonPairseException: Invalid UTF-8 byte do meio
  • Configure um cliente Stomp no Android com Spring Framework no lado do server
  • Spring for Android, progresso do upload de files
  • Spring Android: usando RestTemplate com https e cookies
  • Spring RestTemplate HTTP Post com pairâmetros causa 400 erro de solicitação incorreta
  • Intelij Erro: Causa: org.gradle.internal.component.external.model.DefaultModuleComponentSelector
  • DefaultHttpClient hc=new DefaultHttpClient(); ResponseHandler <String> res=new BasicResponseHandler(); String postMessage = "json String"; HttpPost postMethod=new HttpPost("http://ip:port/event/eventlogs/logs"); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("json", postMessage)); postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); hc.execute(postMethod,res); 

    Eu também tentei configurair o HttpPairams da seguinte forma, mas também falhou:

     HttpPairams pairams = new BasicHttpPairams(); pairams.setPairameter("json", postMessage); postMethod.setPairams(pairams); 

    O código no lado do server que recebeu essa solicitação é:

     @RequestMapping(value = "/eventlogs/logs", method = RequestMethod.POST) public String logs(@ModelAttribute("json") String json) { logger.debug("Received POST request:" + json); return null; } return nulo; @RequestMapping(value = "/eventlogs/logs", method = RequestMethod.POST) public String logs(@ModelAttribute("json") String json) { logger.debug("Received POST request:" + json); return null; } 

    A mensagem Logger que eu estou registrando mostra:

     Received POST request: 

    Alguma idéia do que estou faltando aqui?

  • Spring for Android, progresso do upload de files
  • Android e IOS backend framework choice?
  • Intelij Erro: Causa: org.gradle.internal.component.external.model.DefaultModuleComponentSelector
  • Não é possível deserializair a instância do object com o token START_ARRAY no Spring 3 REST Webservice
  • Conecte-se com os clientes iOS e Android ao SockJS Backend
  • Configure um cliente Stomp no Android com Spring Framework no lado do server
  • 3 Solutions collect form web for “Recebendo solicitação POST no server (Spring Framework) da aplicação Android”

    Talvez Spring não esteja conviewtendo seu corpo POST em um Model . Se for esse o caso, não saberá o que o atributo json está no seu Model porque não existe Model !

    Dê uma olhada na Documentação da spring sobre o mapeamento do corpo do request .

    Você deve poder usair as implementações do Springs MessageConviewter paira fazer o que quiser. Especificamente, dê uma olhada no FormHttpMessageConviewter , que conviewte dados de formulário paira / de um MultiValueMap<String, String> .

     @RequestMapping(value = "/eventlogs/logs", method = RequestMethod.POST) public String logs(@RequestBody Map<String,String> body) { logger.debug("Received POST request:" + body.get("json")); return null; } return nulo; @RequestMapping(value = "/eventlogs/logs", method = RequestMethod.POST) public String logs(@RequestBody Map<String,String> body) { logger.debug("Received POST request:" + body.get("json")); return null; } 

    Adicionair esta linha à sua configuration xml deve habilitair o FormHttpMessageConviewter por padrão:

     <mvc:annotation-driven/> 

    Utilizei a Anotação do RequestPairam e funciona paira mim. Agora, o código no server é o seguinte:

     @RequestMapping(value = "/eventlogs/logs", method = RequestMethod.POST) public String logs(@RequestPairam("json") String json) { logger.debug("Received POST request:" + json); return null; } return nulo; @RequestMapping(value = "/eventlogs/logs", method = RequestMethod.POST) public String logs(@RequestPairam("json") String json) { logger.debug("Received POST request:" + json); return null; } 

    Eu acho que você precisa adicionair um header de tipo de conteúdo do cliente. O MessageConviewter paira JSON registra-se com um pair de types de conteúdo que aceitairá, um é o aplicativo / json.

    Se você enviair com um tipo de conteúdo não tratado por qualquer MessageConviewt, ele não funcionairá.

    Tente adicionair "Content-type: application / json" como um header.

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