Je suis à l'écriture de code pour une application sur Android qui est censé prendre les données, de les emballer sous forme de Json et l'envoyer à un serveur web, qui à son tour est censé répondre avec json.
À l'aide d'une requête GET fonctionne très bien, mais pour une raison quelconque à l'aide de POST toutes les données semble l'avoir dépouillé et le serveur ne reçoit rien.
Voici un extrait du code:
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);
DefaultHttpClient httpClient = new DefaultHttpClient(params);
BasicCookieStore cookieStore = new BasicCookieStore();
httpClient.setCookieStore(cookieStore);
String uri = JSON_ADDRESS;
String result = "";
String username = "user";
String apikey = "something";
String contentType = "application/json";
JSONObject jsonObj = new JSONObject();
try {
jsonObj.put("username", username);
jsonObj.put("apikey", apikey);
} catch (JSONException e) {
Log.e(TAG, "JSONException: " + e);
}
HttpPost httpPost = new HttpPost(uri);
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
postParams.add(new BasicNameValuePair("json", jsonObj.toString()));
HttpGet httpGet = null;
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParams);
entity.setContentEncoding(HTTP.UTF_8);
entity.setContentType("application/json");
httpPost.setEntity(entity);
httpPost.setHeader("Content-Type", contentType);
httpPost.setHeader("Accept", contentType);
} catch (UnsupportedEncodingException e) {
Log.e(TAG, "UnsupportedEncodingException: " + e);
}
try {
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
if (httpEntity != null) {
InputStream is = httpEntity.getContent();
result = StringUtils.convertStreamToString(is);
Log.i(TAG, "Result: " + result);
}
} catch (ClientProtocolException e) {
Log.e(TAG, "ClientProtocolException: " + e);
} catch (IOException e) {
Log.e(TAG, "IOException: " + e);
}
return result;
Je pense avoir suivi les directives générales sur la façon de créer les paramètres et de les poster, mais apparemment pas.
De l'aide ou des pointeurs vers où je peux trouver une solution, ce sont les bienvenus à ce moment (après avoir passé quelques heures réalisant pas de données post a jamais été envoyé). Le vrai serveur est en cours d'exécution de Guichet sur Tomcat, mais j'ai aussi testé sur une simple page PHP, avec aucune différence.