牛骨文教育服务平台(让学习变的简单)
博文笔记

用Base64对JAVA对象进行转码

创建时间:2016-05-11 投稿人: 浏览次数:332
** 
 * xml传递<a href="http://lib.csdn.net/base/17" class="replace_word" title="Java EE知识库" target="_blank" style="color:#df3434; font-weight:bold;">Java</a>对象字节流 
 */  
      try {  
          //初始化Java对象  
          Message msg = new Message();  
          msg.setStatus(Message.HELLO);  
          msg.setMessage("come from china!");  
          //序列化对象  
          ByteArrayOutputStream bOut = new ByteArrayOutputStream();  
          ObjectOutputStream objOut = new ObjectOutputStream(bOut);  
          objOut.writeObject(msg);  
          //base64 encode  
          BASE64Encoder encode = new BASE64Encoder();  
          String xmlStr = encode.encode(bOut.toByteArray());  
          //xml file string  
          StringBuffer xmlFile = new StringBuffer();  
          xmlFile.append("<?xml version=/"1.0/" encoding=/"UTF-8/"?>")  
          .append("<rule>")  
          .append("<obj>"+xmlStr+"</obj>")  
          .append("</rule>");  
          System.out.println("xml: "+xmlFile.toString());  
          //parse xml  
          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
          DocumentBuilder builder = factory.newDocumentBuilder();  
          Document doc = builder.parse(new ByteArrayInputStream(xmlFile.toString().getBytes()));  
          Element root = (Element) doc.getElementsByTagName("obj").item(0);  
          String xmlNode = root.getFirstChild().getNodeValue();  
          //base64 decode  
          BASE64Decoder decode = new BASE64Decoder();  
          byte[] objBytes = decode.decodeBuffer(xmlNode);  
          //反序列化  
          ByteArrayInputStream bIn = new ByteArrayInputStream(objBytes);  
          ObjectInputStream objIn = new ObjectInputStream(bIn);  
          Object obj = objIn.readObject();  
          if(obj != null){  
             if (obj instanceof Message) {  
                 Message m = (Message)obj;  
                 System.out.println("Status: "+m.getStatus());  
                 System.out.println(m.getMessage());  
             }  
          }  
            
      } catch (Exception e) {  
          e.printStackTrace();  
      }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。