我正在开发一个项目,其中包括服务器(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<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;
}
我的猜测是问题出在我用来将 XML 设置为 POST 参数之一的 BasicNameValuePair 中,并且它的文档说它使用 US-ASCII 字符集。发送 UTF-8 编码的 POST 字段的正确方法是什么?
经过大量研究并尝试使事情正常运行后,我终于找到了问题的解决方案,即对现有代码进行简单的添加。解决方案是在 UrlEncodedFormEntity 类构造函数中使用参数“UTF-8”:
form = new UrlEncodedFormEntity(nameValuePairs,"UTF-8");
进行此更改后,字符被编码并正确传送到服务器端。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)