Я работаю над проектом, который включает в себя связь сервера (приложение JavaEE) и клиента (приложение для Android). XML отправляется как один из параметров POST HTTP-запроса (с именем "xml" ). Есть также несколько других параметров POST, которые я передаю серверу, но в функции ниже я удалил их для простоты. Возникает проблема в том, что некоторые буквы не доставляются на сервер надлежащим образом - например, символ Ű
(обратите внимание, что это не немецкий Ü
, который правильно доставлен, кстати). Код для отправки:
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;
}
Моя догадка заключается в том, что проблема в BasicNameValuePair, которую я использую для установки XML как одного из параметров POST, и в документации говорится, что он использует набор символов US-ASCII. Каков правильный способ отправки полей POST с кодировкой UTF-8?