Je travaille sur un projet qui comprend la communication entre le serveur (application JavaEE) et le client (application Android). Le XML est envoyé comme l'un des paramètres POST de la requête HTTP (nommé "xml"). Il y a également quelques autres paramètres POST que je passe au serveur, mais dans la fonction ci-dessous je les ai supprimés pour des raisons de simplicité. Le problème qui se pose est que certaines lettres ne sont pas correctement transmises au serveur - par exemple le caractère Ű
(Notez que ce n'est pas de l'allemand Ü
(qui est d'ailleurs correctement livré). Le code d'envoi est le suivant :
private String postSyncXML(String XML) {
String url = "http://10.0.2.2:8080/DebugServlet/DebugServlet";
HttpClient httpclient = new DefaultHttpClient();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("xml",XML));
UrlEncodedFormEntity form;
try {
form = new UrlEncodedFormEntity(nameValuePairs);
form.setContentEncoding(HTTP.UTF_8);
HttpPost httppost = new HttpPost(url);
httppost.setEntity(form);
HttpResponse response = (HttpResponse) httpclient .execute(httppost);
HttpEntity resEntity = response.getEntity();
String resp = EntityUtils.toString(resEntity);
Log.i(TAG,"postSyncXML srv response:"+resp);
return resp;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Je pense que le problème se situe dans la paire BasicNameValuePair que j'utilise pour définir le XML comme l'un des paramètres POST. La documentation indique qu'elle utilise le jeu de caractères US-ASCII. Quelle est la bonne façon d'envoyer des champs POST codés en UTF-8 ?