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

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

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

    休息食客

    隨心而動

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      16 隨筆 :: 7 文章 :: 2 評論 :: 0 Trackbacks
    第一節(jié)講了怎么準(zhǔn)備所有的參數(shù),這里講怎么將這些參數(shù)組成xml(即要通過HTTPS發(fā)送的數(shù)據(jù))
    大家可以先在網(wǎng)上了解一下java bean轉(zhuǎn)xml的相關(guān)知識
    1、我建了里一個(gè)請求參數(shù)類
    public class WechatCashHongbaoSendReq {
     
     private String nonce_str;             //隨機(jī)字符串
     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;             //紅包發(fā)放總?cè)藬?shù)
     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個(gè)參數(shù)都set進(jìn)去
    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、將請求類轉(zhuǎn)為xml
    String data = Util.bean2XML(req).replaceAll("__", "_");    //為什么要加一個(gè)replaceAll("__", "_"),如果不加,會有什么情況,大家可以試試
    寫一個(gè)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用
        /**
         * 通過反射的方式遍歷對象的屬性和屬性值,方便調(diào)試
         *
         * @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數(shù)據(jù)映射到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數(shù)據(jù),一般用來自測用
         * @param localPath 本地xml文件路徑
         * @return 讀到的xml字符串
         */
        public static String getLocalXMLString(String localPath) throws IOException {
            return Util.inputStreamToString(Util.class.getResourceAsStream(localPath));
        }
       
        /**
         * 將java對象轉(zhuǎn)為xml字符串
         * @param clazz
         * @return
         */
        public static String bean2XML(Object o){
         xstream.alias("xml", o.getClass());
         return xstream.toXML(o);
        }
       
        /**
      * 擴(kuò)展xstream,使其支持CDATA塊
      *  
      * @date 2013-05-19
      */  
     private static XStream xstream = new XStream(new XppDriver() {  
         public HierarchicalStreamWriter createWriter(Writer out) {  
             return new PrettyPrintWriter(out) {  
                 // 對所有xml節(jié)點(diǎn)的轉(zhuǎn)換都增加CDATA標(biāo)記  
                 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);  
                     }  
                 }  
             };  
         }  
     });  
       
    }
    到這一步,已經(jīng)完成了最終要發(fā)送出去的數(shù)據(jù),然后是寫http請求方法。
    聲明:工具類代碼參考微信支付開發(fā)的demo,有些自己做了小改動。
    PS:需要引入xstream-1.3.1.jar包,大家可以去apache中央倉庫找https://repository.sonatype.org,輸入xstream就可以搜索到,并下載出來,如果你的項(xiàng)目是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
    主站蜘蛛池模板: 亚洲av日韩av高潮潮喷无码 | 久久精品国产精品亚洲| 亚洲色大情网站www| 亚洲天堂男人天堂| 亚洲熟妇无码AV不卡在线播放| 一区二区免费视频| 国产jizzjizz免费视频| 亚洲欧美日韩综合久久久久| 精品免费tv久久久久久久| 国产午夜亚洲精品理论片不卡 | 免费可以看黄的视频s色| 亚洲欧洲日本天天堂在线观看| 91短视频在线免费观看| 亚洲国产精品线在线观看| 1a级毛片免费观看| 亚洲综合久久一本伊伊区| 毛片A级毛片免费播放| 亚洲精品无码Av人在线观看国产 | 日日麻批免费40分钟日本的| 久久精品国产亚洲av影院| 亚洲精品无码mv在线观看网站| 皇色在线免费视频| 免费无码看av的网站| 猫咪免费观看人成网站在线| 亚洲一级特黄大片无码毛片| 亚洲s码欧洲m码吹潮| 免费在线观看污网站| 亚洲精品成a人在线观看夫 | 亚洲午夜福利在线观看| 免费人成毛片动漫在线播放| 亚洲第一页在线播放| 久久99精品视免费看| 亚洲乱码日产精品BD在线观看| 免费无码黄动漫在线观看| sss日本免费完整版在线观看| 国产成人无码免费视频97| 亚洲午夜一区二区电影院| 在线观看免费宅男视频| 美女视频黄免费亚洲| 一个人免费观看www视频在线| 亚洲Aⅴ在线无码播放毛片一线天|