我正在开发我的客户端 - 服务器应用程序(服务器就像一个servlet,客户端是一个Android应用程序)。当消息有特殊字符(即:'è'或其他)时,我在两个实体之间发送信息时遇到一些困难
在客户端,我使用此代码发送可能包含特殊字符的消息:
public static String effettuaPOSTServer (String parameters) {
try {
byte [] parametersBytes = parameters.getBytes("UTF-8");
URL url = new URL("http://" + IP_SERVER + ":" + PORT + PATH_SERVLET);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setConnectTimeout(10000);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content_Type", "application/x-www-form-urlencoded; charset=utf-8");
connection.setRequestProperty ("Content-Length", String.valueOf (parametersBytes.length));
connection.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.write(parametersBytes);
wr.flush();
wr.close();
BufferedReader br = new BufferedReader (new InputStreamReader(connection.getInputStream(), "UTF-8"));
StringBuilder sb = new StringBuilder ();
String s;
while ((s = br.readLine ()) != null) {
sb.append (s);
sb.append ("\n");
}
return sb.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
在服务器端我使用此代码发送响应(响应可以包含特殊字符,如'è'和其他)(我在servlet doPost上下文中,所以我使用HttpServletRequest请求和HttpServletResponse响应):
PrintWriter pw = response.getWriter();
...
String content = ...; //the string is formatted in JSON format
pw.println (content);
但在双方都无法接收和管理我有特殊字符的正确字符串。
我正在网上尝试很多关于编码/解码等的解决方案,但没有成功的结果。 我该如何解决我的问题?谢谢!
编辑: 例如,从我的客户端看到我的请求如下(我用GET格式报告请求以简单说明案例):
http://MY_URL:PORT/MY_PATH?parameter1=value1¶meter2=value2¶meter3=èqualcosaacaso
但在服务器上我收到:
parameter1=value1
parameter2=value2
parameter3=Äqualcosaacaso