En Java, en utilisant HttpPost (apache commons HttpClient) lors de l'envoi de JSON POST - dois-je encoder le corps?
Je suis l'envoi d'un séjour JSON requête POST à l'aide de Apache HttpClient (pour une 3ème partie de l'API)
- Dois-je encoder au format JSON corps?
- Et si quelque chose dans le contenu est déjà codées dans l'URL (par exemple, j'ai envoyer le HTML qui a des liens avec l'URL encodée caractères, par exemple @22) dois-je attendre pour obtenir le contenu de l'autre côté, sans qu'il soit décodé?
E. g. si je suis en train de faire quelque chose comme ceci
String html = "<a href='http://example.com?charOfTheDay=%22'>click me</a>";
//Build the JSON object
JSONObject jsonObj = new JSONObject();
jsonObj.put("html", html);
jsonObj.put("otherKey",otherValue);
//...
//Create the POST object and add the parameters
HttpPost httpPost = new HttpPost(url);
StringEntity entity = new StringEntity(jsonObj.toString(), HTTP.UTF_8);
entity.setContentType("application/json");
httpPost.setEntity(entity);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(httpPost);
Dois-je m'attendre d'obtenir la même valeur sur l'extrémité de réception, après l'obtention de la valeur de la "html" clé?
par exemple sur la fin de réception
//after parsing the request string to a JSON object
String html = inputJsonObject.get("html")
//should return "<a href='http://example.com?charOfTheDay=%22'>click me</a>"
Existe-il d'autres étapes que j'ai besoin de faire pour être sûr de ce que j'envoie est ce qui est reçu comme "est"?
OriginalL'auteur Eran Medan | 2012-06-01
Vous devez vous connecter pour publier un commentaire.
Il y a deux contextes, vous avez à vous soucier ici:
JSON
Vous devez vous assurer que le JSON que vous générez est JSON valide (duh). Cela signifie s'assurer que tous les
{ }
et[ ]
syntaxe est à la bonne place et de s'assurer que les valeurs de champ sont de l'insérer dans l'objet JSON en toute sécurité échappé (comme pour échapper qu'un fragment de code HTML dans votre question --quelques-uns des caractères de devis devra être échappé). MAIS parce que vous êtes à l'aide d'un JSON bibliothèque Java, vous n'avez pas à vous inquiéter à ce sujet...il va prendre soin de tout cela pour vous.HTTP
La chaîne JSON doit alors être inséré dans le corps de requête HTTP. Impossible d'échapper à qui doit être fait ici, il suffit d'insérer le raw chaîne JSON. HTTP, le protocole, acceptera rien à l'intérieur de la requête/réponse des organismes, y compris des données binaires brutes.
De toute façon c'était un peu long, mais j'espère que ça a aidé.
OriginalL'auteur Michael
Le Type de Contenu dans votre en-tête http devraient être d'application/json, de sorte que vous ne pouvons pas les encoder, le corps de la requête http.
L'encodage de l'URL est destinée à empêcher les utilisateurs d'utiliser des caractères spéciaux dans la représentation de l'Url (tels que"/").
Vous n'avez pas à vous soucier des liens dans le contenu de décodage soit, sauf si vous utilisez un Type de Contenu dans votre en-tête http qui suggère que le serveur doit décoder le corps, tels que l'application/x-www-form-urlencoded
OriginalL'auteur cabbagebot