Я работаю над проектом, который включает взаимодействие сервера (приложение 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?