2017-08-15 1 views
1

J'ai un service Web REST qui me permet de télécharger des informations utilisateur au format JSON via une requête POST. On dirait que je peux le faire en utilisantCodenameone comment ajouter plusieurs sous-entrées JSON dans une requête POST

post.addArgument("Name",entry.get("Name").toString()); 
post.addArgument("JobRole",entry.get("JobRole").toString()); 

« entrée » est un ArrayList < MapString, objet>

Comme vous pouvez le voir dans le ci-dessous JSON J'ai aussi la possibilité d'envoyer plusieurs entrées par utilisateur (dans ce cas, les détails d'adresse) comme dans cet exemple JSON:

{ 

    "Name":"Fred Flintstone", 

    "JobRole":"Quarry worker", 

    "Address":[ 

    { 

     "Address1" :"Boulder House", 

     "Address2" :"Rock Way", 

     "Address3" :"Rock City" 

    } 

    ] 
} 

j'ai essayé d'utiliser

post.addArgumentArray("Address",entry.get("Address1").toString,entry.get("Address2")) 

pour combiner les entrées pour l'utilisateur sous Adresse mais je reçois "400: Demande incorrecte" retourné. Alors, comment ajouter plusieurs entrées comme celle-ci à ma demande?

Cordialement

Répondre

1

Ce sont des arguments de style POST et ils sont ajoutés comme arguments HTTP réguliers et non comme JSON (c'est comme soumission d'un formulaire en HTML).

Ce que vous cherchez est quelque chose comme:

ConnectionRequest cr = new ConnectionRequest(url, true) { 
    protected void buildRequestBody(OutputStream os) throws IOException { 
     // snipped this but you should get the rest... 
     os.write("{\"Name\":\"Fred Flintstone\",\"JobRole\":\"Quarry worker\", ..."); 
    } 
}; 

vous pouvez également utiliser le new terse REST API:

Map<String, Object> jsonData = Rest.post(myUrl).body(bodyValueAsString).getAsJsonMap();