Android 向Tomcat服务器提交中文乱码问题解决
来源:互联网 发布:淘宝保证金会退会扣吗 编辑:程序博客网 时间:2024/05/16 06:42
我们知道Android向服务器提交数据有很多方式,本文作者常用的是 模拟Http协议使用get或者post方式来提交。这时候如果提交的数据为中文,势必牵扯到乱码问题。
网上也有很多种方式(包括设置统一编码,或者对中文进行URL编码),也许是本文作者前期编码设置不一样,经过适用之后却只有一种可行。 就是将get方式改变为post方式来解决这个问题,附上android端与tomcat代码,希望能为初学android的朋友带来点帮助。
下面是Android客户端与Tomcat服务端使用的一个工具类代码,需要在下文中用到:
public class StreamTool {//从输入流中读取数据public static byte[] readInputStream(InputStream inStream) throws Exception{ByteArrayOutputStream outSteam = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while( (len = inStream.read(buffer)) !=-1 ){outSteam.write(buffer, 0, len);}outSteam.close();inStream.close();return outSteam.toByteArray();}}
下面为post方式从Android向服务器提交数据代码,注意“conn.setRequestProperty”这个地方public static String getPatients(String keShi) {String path1 = "http://192.168.1.226:8181/HPPatient/servlet/DBService1";try {byte[] data = (keShi).getBytes();URL url = new URL(path1);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(5 * 1000);conn.setRequestMethod("POST");conn.setDoOutput(true);conn.setRequestProperty("Content-Type", "text;charset=UTF-8");conn.setRequestProperty("Content-Length",String.valueOf(data.length));conn.getOutputStream().write(data);//得到响应吗if (conn.getResponseCode() == 200) {InputStream inStream = conn.getInputStream();byte[] data1 = StreamTool.readInputStream(inStream);inStream.close();return new String(data1, "GBK");}return "NetError";} catch (Exception e) {return "NetError";}}
下面为Tomcat服务器端接收代码:注意接收时为UTF-8,作者曾将两端编码统一为其他编码格式例如GBK,都呈现乱码问题。public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {if (request.getInputStream() != null) {try {//这样既可解决乱码String keShi = new String(StreamTool.readInputStream(request.getInputStream()),"UTF-8");//下面读者不必理会String data = DBUtils.getMessage(keShi);OutputStream out = response.getOutputStream();out.write(data.getBytes());out.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
- Android 向Tomcat服务器提交中文乱码问题解决
- 【安卓笔记】android客户端向tomcat服务器发送请求中文乱码问题解决
- [安卓笔记]android客户端向tomcat服务器发送请求中文乱码问题解决
- android客户端向服务器提交请求的中文乱码问题
- Tomcat JSP提交参数中文乱码问题解决
- Android向服务器上传中文乱码解决
- Android向服务器上传中文乱码解决
- tomcat下ajax‘post方式提交服务器乱码问题解决方案
- javascript 向服务器提交的中文乱码问题
- 浏览器表单向服务器提交中文出现乱码问题
- Tomcat服务器记录日志(Logger)出现中文乱码问题解决
- TOMCAT 中文URL乱码问题解决
- Android中文乱码问题解决
- Android向服务器发送请求时的中文乱码问题
- httpClient中文乱码问题解决(wap提交)
- Get方式提交中文乱码问题解决
- httpClient中文乱码问题解决(wap提交)
- Struts2提交表单中文乱码问题解决
- Q64
- eclipse安装及验证
- sgzj中修改中的常量 以及技巧
- Arcgis server 安装破解教程
- android XML转义字符
- Android 向Tomcat服务器提交中文乱码问题解决
- Jython小问题-字符编码
- 71道经典Android面试题和答案
- MFC如何实现打开一个文件,就像安装完某个程序然后弹出一个readme.txt一样?
- Struts2 采用convention-plugin实现零配置
- js获取图片点坐标值
- 统一数据库集群
- php - 一些好习惯
- ProgressBar更新