<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    休息食客

    隨心而動

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      16 隨筆 :: 7 文章 :: 2 評論 :: 0 Trackbacks
    第一節講了怎么準備所有的參數,這里講怎么將這些參數組成xml(即要通過HTTPS發送的數據)
    大家可以先在網上了解一下java bean轉xml的相關知識
    1、我建了里一個請求參數類
    public class WechatCashHongbaoSendReq {
     
     private String nonce_str;             //隨機字符串
     private String sign;                  //簽名
     private String mch_billno;            //商戶訂單號
     private String mch_id;                //商戶號
     private String wxappid;               //公眾賬號appid
     private String send_name;             //商戶名稱
     private String re_openid;             //用戶openid
     private int total_amount;          //付款金額
     private int total_num;             //紅包發放總人數
     private String wishing;               //紅包祝福語
     private String client_ip;             //Ip地址
     private String act_name;              //活動名稱
     private String remark;                //備注
     
     public String getNonce_str() {
      return nonce_str;
     }
     public void setNonce_str(String nonce_str) {
      this.nonce_str = nonce_str;
     }
     public String getSign() {
      return sign;
     }
     public void setSign(String sign) {
      this.sign = sign;
     }
     public String getMch_billno() {
      return mch_billno;
     }
     public void setMch_billno(String mch_billno) {
      this.mch_billno = mch_billno;
     }
     public String getMch_id() {
      return mch_id;
     }
     public void setMch_id(String mch_id) {
      this.mch_id = mch_id;
     }
     public String getWxappid() {
      return wxappid;
     }
     public void setWxappid(String wxappid) {
      this.wxappid = wxappid;
     }
     public String getSend_name() {
      return send_name;
     }
     public void setSend_name(String send_name) {
      this.send_name = send_name;
     }
     public String getRe_openid() {
      return re_openid;
     }
     public void setRe_openid(String re_openid) {
      this.re_openid = re_openid;
     }
     public int getTotal_amount() {
      return total_amount;
     }
     public void setTotal_amount(int total_amount) {
      this.total_amount = total_amount;
     }
     public int getTotal_num() {
      return total_num;
     }
     public void setTotal_num(int total_num) {
      this.total_num = total_num;
     }
     public String getWishing() {
      return wishing;
     }
     public void setWishing(String wishing) {
      this.wishing = wishing;
     }
     public String getClient_ip() {
      return client_ip;
     }
     public void setClient_ip(String client_ip) {
      this.client_ip = client_ip;
     }
     public String getAct_name() {
      return act_name;
     }
     public void setAct_name(String act_name) {
      this.act_name = act_name;
     }
     public String getRemark() {
      return remark;
     }
     public void setRemark(String remark) {
      this.remark = remark;
     }
    }

    2、然后把13個參數都set進去
    WechatCashHongbaoSendReq sendReq = new WechatCashHongbaoSendReq();
      sendReq.setNonce_str(nonce_str);
      sendReq.setSign(sign);
      sendReq.setMch_billno(mch_billno);
      sendReq.setMch_id(mch_id);
      sendReq.setWxappid(wxappid);
      sendReq.setSend_name(send_name);
      sendReq.setRe_openid(re_openid);
      sendReq.setTotal_amount(total_amount);
      sendReq.setTotal_num(total_num);
      sendReq.setWishing(wishing);
      sendReq.setClient_ip(client_ip);
      sendReq.setAct_name(act_name);
      sendReq.setRemark(remark);
    3、將請求類轉為xml
    String data = Util.bean2XML(req).replaceAll("__", "_");    //為什么要加一個replaceAll("__", "_"),如果不加,會有什么情況,大家可以試試
    寫一個Util類,代碼如下:
    import com.thoughtworks.xstream.XStream;
    import com.thoughtworks.xstream.core.util.QuickWriter;
    import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
    import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
    import com.thoughtworks.xstream.io.xml.XppDriver;
    import java.io.*;
    import java.lang.reflect.Field;
    import java.util.Map;
    /**
     * User: rizenguo
     * Date: 2014/10/23
     * Time: 14:59
     */
    public class Util {
        //打log用
        /**
         * 通過反射的方式遍歷對象的屬性和屬性值,方便調試
         *
         * @param o 要遍歷的對象
         * @throws Exception
         */
        public static void reflect(Object o) throws Exception {
            Class cls = o.getClass();
            Field[] fields = cls.getDeclaredFields();
            for (int i = 0; i < fields.length; i++) {
                Field f = fields[i];
                f.setAccessible(true);
                Util.log(f.getName() + " -> " + f.get(o));
            }
        }
        public static byte[] readInput(InputStream in) throws IOException {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            int len = 0;
            byte[] buffer = new byte[1024];
            while ((len = in.read(buffer)) > 0) {
                out.write(buffer, 0, len);
            }
            out.close();
            in.close();
            return out.toByteArray();
        }
        public static String inputStreamToString(InputStream is) throws IOException {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int i;
            while ((i = is.read()) != -1) {
                baos.write(i);
            }
            return baos.toString();
        }
        public static InputStream getStringStream(String sInputString) throws UnsupportedEncodingException {
            ByteArrayInputStream tInputStringStream = null;
            if (sInputString != null && !sInputString.trim().equals("")) {
                tInputStringStream = new ByteArrayInputStream(sInputString.getBytes("UTF-8"));
            }
            return tInputStringStream;
        }
        public static Object getObjectFromXML(String xml, Class tClass) {
            //將從API返回的XML數據映射到Java對象
         xstream.alias("xml", tClass);
            return xstream.fromXML(xml);
        }
        public static String getStringFromMap(Map<String, Object> map, String key, String defaultValue) {
            if (key == "" || key == null) {
                return defaultValue;
            }
            String result = (String) map.get(key);
            if (result == null) {
                return defaultValue;
            } else {
                return result;
            }
        }
        public static int getIntFromMap(Map<String, Object> map, String key) {
            if (key == "" || key == null) {
                return 0;
            }
            if (map.get(key) == null) {
                return 0;
            }
            return Integer.parseInt((String) map.get(key));
        }
        /**
         * 打log接口
         * @param log 要打印的log字符串
         * @return 返回log
         */
        public static String log(Object log){
            return log.toString();
        }
        /**
         * 讀取本地的xml數據,一般用來自測用
         * @param localPath 本地xml文件路徑
         * @return 讀到的xml字符串
         */
        public static String getLocalXMLString(String localPath) throws IOException {
            return Util.inputStreamToString(Util.class.getResourceAsStream(localPath));
        }
       
        /**
         * 將java對象轉為xml字符串
         * @param clazz
         * @return
         */
        public static String bean2XML(Object o){
         xstream.alias("xml", o.getClass());
         return xstream.toXML(o);
        }
       
        /**
      * 擴展xstream,使其支持CDATA塊
      *  
      * @date 2013-05-19
      */  
     private static XStream xstream = new XStream(new XppDriver() {  
         public HierarchicalStreamWriter createWriter(Writer out) {  
             return new PrettyPrintWriter(out) {  
                 // 對所有xml節點的轉換都增加CDATA標記  
                 boolean cdata = true;  
       
                 @SuppressWarnings("unchecked")  
                 public void startNode(String name, Class clazz) {  
                     super.startNode(name, clazz);  
                 }  
       
                 protected void writeText(QuickWriter writer, String text) {  
                     if (cdata) {  
                         writer.write("<![CDATA[");  
                         writer.write(text);  
                         writer.write("]]>");  
                     } else {  
                         writer.write(text);  
                     }  
                 }  
             };  
         }  
     });  
       
    }
    到這一步,已經完成了最終要發送出去的數據,然后是寫http請求方法。
    聲明:工具類代碼參考微信支付開發的demo,有些自己做了小改動。
    PS:需要引入xstream-1.3.1.jar包,大家可以去apache中央倉庫找https://repository.sonatype.org,輸入xstream就可以搜索到,并下載出來,如果你的項目是maven建立的,直接在pom.xml里面加上就行
    <dependency>
         <groupId>com.thoughtworks.xstream</groupId>
         <artifactId>xstream</artifactId>
         <version>1.3.1</version>
    </dependency>
    posted on 2015-09-11 15:46 休息食客 閱讀(327) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 亚洲春色在线观看| 无码毛片一区二区三区视频免费播放 | 亚洲欧洲日韩国产| 国产在线19禁免费观看国产 | 国产成人涩涩涩视频在线观看免费| 草久免费在线观看网站| 亚洲一区二区三区首页| 免费黄色毛片视频| 免费日本一区二区| 亚洲日韩精品无码专区| 久久精品亚洲中文字幕无码网站 | 182tv免费观看在线视频| 99亚洲乱人伦aⅴ精品| 亚洲国产成人久久精品影视| 日韩免费无砖专区2020狼| 久久国产免费一区| 一级中文字幕免费乱码专区 | 日本免费污片中国特一级| 香蕉97碰碰视频免费| 亚洲国产视频网站| 亚洲av无码精品网站| 免费乱理伦在线播放| 免费精品国产日韩热久久| 十八禁在线观看视频播放免费| 色欲aⅴ亚洲情无码AV| 亚洲免费福利视频| 久久精品亚洲中文字幕无码网站 | 亚洲国产片在线观看| 亚洲欧洲成人精品香蕉网| 免费A级毛片无码A∨男男| 动漫黄网站免费永久在线观看 | 免费乱码中文字幕网站| 大地资源二在线观看免费高清| 一个人免费视频观看在线www| 大桥未久亚洲无av码在线| 亚洲午夜无码毛片av久久京东热| 亚洲国产老鸭窝一区二区三区| 亚洲成av人片天堂网老年人| 美女被免费视频网站a国产| 一二三四在线播放免费观看中文版视频| 免费视频成人手机在线观看网址|