Android requête POST à l'aide de HttpURLConnection

Je suis en train d'exécuter une requête post à l'aide de HttpURLConnection mais vous ne savez pas comment le faire correctement.

Je peux avec succès l'exécution de la demande avec AndroidAsyncHttp client à l'aide de code suivant:

AsyncHttpClient httpClient = new AsyncHttpClient();
httpClient.addHeader("Content-type", "application/json");
httpClient.setUserAgent("GYUserAgentAndroid");
String jsonParamsString = "{\"key\":\"value\"}";
RequestParams requestParams = new RequestParams("request", jsonParamsString);
httpClient.post("<server url>", requestParams, jsonHttpResponseHandler);

La même demande peut être effectuée à l'aide de curl sur machine de bureau:

curl -A "GYUserAgentAndroid" -d 'request={"key":"value"}' '<server url>'

Les deux méthodes de me donner la réponse attendue à partir du serveur.

Maintenant je veux faire la même demande à l'aide de HttpURLConnection. Le problème est que je ne sais pas comment le faire correctement.
J'ai essayé quelque chose comme ceci:

URL url = new URL("<server url>");
HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection();
httpUrlConnection.setDoOutput(true);
httpUrlConnection.setDoInput(true);
httpUrlConnection.setRequestMethod("POST");
httpUrlConnection.setRequestProperty("User-Agent", "GYUserAgentAndroid");
httpUrlConnection.setRequestProperty("Content-Type", "application/json");
httpUrlConnection.setUseCaches (false);

DataOutputStream outputStream = new DataOutputStream(httpUrlConnection.getOutputStream());

//what should I write here to output stream to post params to server ?

outputStream.flush();
outputStream.close();

//get response
InputStream responseStream = new BufferedInputStream(httpUrlConnection.getInputStream());
BufferedReader responseStreamReader = new BufferedReader(new InputStreamReader(responseStream));
String line = "";
StringBuilder stringBuilder = new StringBuilder();
while ((line = responseStreamReader.readLine()) != null) {
    stringBuilder.append(line);
}
responseStreamReader.close();

String response = stringBuilder.toString();
JSONObject jsonResponse = new JSONObject(response);
//the response is not I'm expecting

return jsonResponse;

Comment bien écrire les mêmes données que dans les exemples de travail avec AsyncHttpClient et curl à la HttpURLConnection flux de sortie?

Merci d'avance.

OriginalL'auteur pvshnik | 2013-11-29