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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les méthodes suivantes pour poster les params
Utilisation
outputStream.writeBytes("request=" + jsonParamsString);
Je vous remercie. Maintenant le serveur reconnaître "demande" de paramètre. Il semble qu'il ne peut pas analyser correctement objet json maintenant. De l'espoir, je vais trouver une solution pour ce.
OriginalL'auteur Sunil Mishra
OriginalL'auteur Nasz Njoka Sr.
Ici vous avez une demande à l'aide HttpUrlConnection, ce qu'il vous manque l'on vient de lire la valeur du serveur.
OriginalL'auteur diegoveloper