一个服务端,电脑网页端登录和安卓端登录遇到的一些问题

来源:互联网 发布:东快傻 知乎 编辑:程序博客网 时间:2024/06/16 05:34

     编码问题是个我们经常在开发中会遇到的问题,今天来总结下。

     网页端是jsp,后台处理是servlet,jsp中采用pageEncoding="utf-8",对应的处理登录的servlet是request.setCharacterEncoding("utf-8");

     如果使用GET求情方式登录需要在服务端将获取的数据转码,加上下面的代码:

 username=new String(username.getBytes("ISO-8859-1"),"UTF-8");//get请求才需要这个转码 password=new String(password.getBytes("ISO-8859-1"),"UTF-8");

    再就是服务端返回数据给客户端解析,这个我是这样的处理的,下面代码

  

                       if(user!=null){    System.out.println("登录成功");    OutputStream out=response.getOutputStream();    String data="登录成功";    out.write(data.getBytes("utf-8"));    }    else{    System.out.println("登录失败");        OutputStream out=response.getOutputStream();        String data="登录失败";        out.write(data.getBytes("utf-8"));    }


网页端就是直接写过去就是将流解析到跳转的网页上,安卓端是这样处理的

String charset="utf-8";  int code = conn.getResponseCode();  if(code==200){   String data2 = StreamTool.streamtoText(conn.getInputStream(), charset);

其中的StreamTool是写的一个解析流的工具类,下面是代码

public class StreamTool {public static String streamtoText(InputStream is,String charset){if(is==null)return null;ByteArrayOutputStream bao=new ByteArrayOutputStream();int len=0;byte[] buf=new byte[1024];try {while((len=is.read(buf))!=-1){bao.write(buf,0,len);}is.close();bao.close();byte[] result=bao.toByteArray();String temp=new String(result,charset);return temp;} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();return "获取失败";}}}




0 0
原创粉丝点击