我正在开展的项目包括服务器(JavaEE应用程序)和客户端(Android应用程序)的通信。 XML作为HTTP请求的一个POST参数(名为“xml”)发送。还有几个其他POST参数,我传递给服务器,但在功能下面,我删除它们为简单。发生的问题是某些字母未正确传送到服务器 – 例如字符Ű(请注意,这不是德语,顺便提供)。发送代码如下:
private String postSyncXML(String XML) {
String url = "http://10.0.2.2:8080/DebugServlet/DebugServlet";
HttpClient httpclient = new DefaultHttpClient();
List nameValuePairs = new ArrayList();
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字符集。发送UTF-8编码的POST字段的正确方法是什么?