用Base64对JAVA对象进行转码

37 篇文章 0 订阅
** 
 * 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();  
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值