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).