Android HTTPUrlConnection: comment définir les données de publication dans le corps http?

J’ai déjà créé mon HTTPUrlConnection:

Ssortingng postData = "x=val1&y=val2"; URL url = new URL(strURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Set-Cookie", sessionCookie); conn.setRequestProperty("Content-Length", "" + Integer.toSsortingng(postData.getBytes().length)); // How to add postData as http body? conn.setUseCaches(false); conn.setDoInput(true); conn.setDoOutput(true); 

Je ne sais pas comment définir postData dans le corps http. Comment faire Est-ce que je ferais mieux d’utiliser HttpPost place?

Merci de votre aide.

Si vous voulez envoyer de la chaîne uniquement, essayez de cette façon:

 Ssortingng str = "some ssortingng goes here"; byte[] outputInBytes = str.getBytes("UTF-8"); OutputStream os = conn.getOutputStream(); os.write( outputInBytes ); os.close(); 

Mais si vous voulez envoyer en tant que Json, changez le type de contenu en:

 conn.setRequestProperty("Content-Type","application/json"); 

et maintenant nous pouvons écrire:

 Ssortingng str = "{\"x\": \"val1\",\"y\":\"val2\"}"; 

J’espère que ça va aider,

Le lien de Guruparan dans le commentaire ci-dessus donne une très bonne réponse à cette question. Je recommande fortement de le regarder. Voici le principe qui fait fonctionner sa solution:

D’après ce que j’ai compris, HttpURLConnection représente le corps de la réponse en tant que OutputStream. Donc, vous devez appeler quelque chose comme:

obtenir le stream de sortie de la connexion

 OutputStream op = conn.getOuputStream(); 

écrire le corps de la réponse

 op.write( [/*your ssortingng in bit form*/] ); 

ferme le stream de sortie

 op.close(); 

et continuez votre chemin avec la connexion (que vous devrez toujours fermer).