Java lire les données de POSTE type de contenu application/x-www-form-urlencoded

J'ai une API que je suis en essais. L'API de recevoir du courrier de Demande et de le lire comme ça

      StringBuffer jb = new StringBuffer();
      String line = null;
      try {
        BufferedReader reader = request.getReader();
        while ((line = reader.readLine()) != null)
            jb.append(line);

        System.out.println("jb: "+jb);
        System.out.println("request.getHeader('content-type'): "+request.getHeader("content-type"));

      } catch (Exception e) { /*report an error*/ }

Tous fonctionne bien lorsque j'envoie une requête POST dans "application/json;charset=utf-8"

httpPost.setHeader("content-type", "application/json;charset=utf-8");

Il imprime ceci:

jb: {"client_domain":"=....); //proper Json data
request.getHeader('content-type'): application/json;charset=utf-8

Et je peux lire les données correctement.

Cependant, mon problème est que lorsque j'envoie les données de la même façon, mais j'ai mis le contenu de type "application/x-www-form-urlencoded;charset=utf-8"

httpPost.setHeader("content-type", "application/x-www-form-urlencoded;charset=utf-8");

Le test est le même juste le type de contenu est différent, mais il semble alors que je ne reçois pas toutes les données plus:

jb: 
request.getHeader('content-type'): application/x-www-form-urlencoded;charset=utf-8

Une idée?

///Mise à jour

Ici, c'est le Printemps Contrôleur

@RequestMapping(value = {"user/add"}, method = RequestMethod.POST, produces="application/json; charset=utf-8")
@ResponseBody
public ResponseEntity<String> getNewUserApi(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

    Map<String, Object> jsonObj = new HashMap<String, Object>();

    StringBuffer jb = new StringBuffer();
      String line = null;
      try {
        BufferedReader reader = request.getReader();
        while ((line = reader.readLine()) != null)
            jb.append(line);

        System.out.println("jb: "+jb);
        System.out.println("request.getHeader('content-type'): "+request.getHeader("content-type"));

      } catch (Exception e) { /*report an error*/ }
    ///I create my JSon that will be sent back
    return JsonUtils.createJson(jsonObj);

//Mise à JOUR 2
Voici comment je m'y envoyer les Données

public static void main(String[] args) throws Exception {

    String url = "http://localhost:8080/child/apiv1/user/add";
    CloseableHttpClient client = HttpClientBuilder.create().build();

    HttpPost httpPost = new HttpPost(url);
    httpPost.setHeader("content-type", "application/x-www-form-urlencoded;charset=utf-8");

    try {
        //we had to the parameters to the post request
        JSONObject json = new JSONObject();

        json.put("client_id", "fashfksajfhjsakfaskljhflakj");
        json.put("client_secret", "9435798243750923470925709348509275092");
        json.put("client_domain", "dummy.localhost.com");

        //create the user json object
        JSONObject userObj = new JSONObject();
        userObj.put("email", "[email protected]");
        userObj.put("name", "Anna Sax");

        JSONArray childrenArray = new JSONArray();

        JSONObject child1 = new JSONObject();
        child1.put("name", "Iphone 6");
        child1.put("age", "2");
        childrenArray.put(child1);
        userObj.put("children", childrenArray);
        json.put("user", childObj);

        StringEntity params = new StringEntity(json.toString());
        httpPost.setEntity(params);

        System.out.println("executing request: " + httpPost.getRequestLine());
        HttpResponse response;
        response = client.execute(httpPost);

   //[...]       

} //End main

Je sais que cela ne fait pas de sens de créer un Json et l'envoyer dans "application/x-www-form-urlencoded" mais c'est juste que l'un de nos utilisateur ne peut pas résoudre son problème et il ne envoyer "application/x-www-form-urlencoded".

Avez-vous de code pour le contrôleur(ou l'équivalent de contrôleur) de la classe?. si oui, merci de la poster.
Comment faites-vous envoyer des données pour le type de contenu application/x-www-form-urlencoded;charset=utf-8? Le doit être dans les paires de valeur clé avec un signe = et plusieurs valeurs de clé doit être jointe ? comme client_domain=122.0.0.1 etc
J'ai posté le contrôleur. Shazin Oui il devrait être comme ça, mais je n'arrive pas à obtenir les données.
Pouvez-vous ajouter de la façon dont vous envoyer l'URL des données codées?
J'ai ajouté la façon dont il est transmis.

OriginalL'auteur drimk | 2015-10-28