<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
    當把要發送的數據準備好之后,接下來是要寫https請求,把它發送給微信服務器
    String reback = HttpClientUtil.sendHttpsUrl("https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack", data);
    需要抓取異常,并處理好異常
    寫一個HttpClientUtil類
    import java.io.BufferedReader;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.security.KeyManagementException;
    import java.security.KeyStore;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    import java.security.SecureRandom;
    import java.security.UnrecoverableKeyException;
    import java.security.cert.Certificate;
    import java.security.cert.CertificateException;
    import java.security.cert.CertificateFactory;
    import java.security.cert.X509Certificate;
    import java.util.HashMap;
    import java.util.Map;
    import javax.net.ssl.HttpsURLConnection;
    import javax.net.ssl.KeyManagerFactory;
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.TrustManagerFactory;
    import com.yxht.core.common.tools.LoadProperties;
    import com.yxht.core.modules.WechatPay.client.TenpayHttpClient;
    /**
     * Http客戶端工具類<br/>
     * 這是內部調用類,請不要在外部調用。
     * @author miklchen
     *
     */
    public class HttpClientUtil {
     
     /**
      * 發送請求(微信支付用,發紅包等等)
      * @param url
      * @param params
      * @return
      * @throws Exception
      */
     public static String sendHttpsUrl(String sendUrl, String params) throws Exception{
      String jsonStr = "";
      String certificate_path = "d\:\\rootca.pem"; //信任庫證書
      String keystore_path = "d\:\\apiclient_cert.p12"; //密鑰庫證書
      String password = "xxxxxxxx"; //商戶號,也是加載證書的密碼
     
      // 聲明SSL上下文  
            SSLContext sslContext = null;  
            // 實例化主機名驗證接口  
            sslContext = getSSLContext(password, keystore_path, certificate_path);  
            if (sslContext != null) {  
                HttpsURLConnection.setDefaultSSLSocketFactory(sslContext  
                        .getSocketFactory());  
            }  
      URL url = new URL(sendUrl);
      HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
      con.setRequestMethod("POST");
      con.setDoOutput(true);
      con.setDoInput(true);
      con.setUseCaches(false);
      //設置套接工廠
      con.setSSLSocketFactory(sslContext.getSocketFactory());
      OutputStreamWriter writer = new OutputStreamWriter(
        con.getOutputStream(), "UTF-8");
      writer.write(params);
      writer.flush();
      writer.close();
      InputStream in = con.getInputStream();
      BufferedReader db = new BufferedReader(new InputStreamReader(in, "UTF-8"));
      String tmp = "";
      while ((tmp = db.readLine()) != null) {
       jsonStr += tmp;
      }
      return jsonStr;
     
     }
     
     /**
         * 獲得SSLSocketFactory.
         * @param password
         *            密碼
         * @param keyStorePath
         *            密鑰庫路徑
         * @param trustStorePath
         *            信任庫路徑
         * @return SSLSocketFactory
         * @throws Exception
         */  
        public static SSLContext getSSLContext(String password,  
                String keyStorePath, String trustStorePath) throws Exception {  
            // 實例化密鑰庫  
            KeyManagerFactory keyManagerFactory = KeyManagerFactory  
                    .getInstance(KeyManagerFactory.getDefaultAlgorithm());  
            // 獲得密鑰庫  
            KeyStore keyStore = getKeyStore(password, keyStorePath);  
            // 初始化密鑰工廠  
            keyManagerFactory.init(keyStore, password.toCharArray());  
     
            // 實例化信任庫  
    //        TrustManagerFactory trustManagerFactory = TrustManagerFactory  
    //                .getInstance(TrustManagerFactory.getDefaultAlgorithm());  
    //        // 獲得信任庫  
    //        KeyStore trustStore = getKeyStore(password, trustStorePath);  
    //        // 初始化信任庫  
    //        trustManagerFactory.init(trustStore);  
            // 實例化SSL上下文  
            SSLContext ctx = SSLContext.getInstance("TLS");  
            // 初始化SSL上下文  
            ctx.init(keyManagerFactory.getKeyManagers(),  
                    null, null);  
            // 獲得SSLSocketFactory  
            return ctx;  
        }  
       
        /**
         * 獲得KeyStore.
         * @param keyStorePath
         *            密鑰庫路徑
         * @param password
         *            密碼
         * @return 密鑰庫
         * @throws Exception
         */  
        public static KeyStore getKeyStore(String password, String keyStorePath)  
                throws Exception {  
            // 實例化密鑰庫  
            KeyStore ks = KeyStore.getInstance("PKCS12");  
            // 獲得密鑰庫文件流  
            FileInputStream is = new FileInputStream(keyStorePath);  
            // 加載密鑰庫  
            ks.load(is, password.toCharArray());  
            // 關閉密鑰庫文件流  
            is.close();  
            return ks;  
        }  
    }
    有些import的沒用,可以刪掉,只要程序代碼沒有報錯的地方就行。
    到這里,如果發送請求,會失敗,它會說你沒有安裝證書,到商戶平臺上去下載證書,文檔里有說明
    下載后一共有4個證書,至少需要密鑰庫證書apiclient_cert.p12,因為信任庫證書rootca.pem我不會用(哪位大神會用教教我),
    文檔里也說了信任庫證書不用也行,證書安裝請仔細研究文檔,代碼上面已經寫好了。

    最后最后,,請發送請求吧!??!

    聲明:工具類代碼參考微信支付開發的demo,有些自己做了小改動。

    PS:需要引入http相關jar包,httpcore-4.2.3.jar,httpmine-4.2.3.jar,httpclient-4.2.3.jar,httpclient-cache-4.2.3.jar。一樣,
    還是去https://repository.sonatype.org里面找吧,如果是maven建立的項目,就把他們引入到pom.xml里面去吧!
    posted on 2015-09-14 12:23 休息食客 閱讀(358) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲av乱码一区二区三区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 色拍自拍亚洲综合图区| 国产四虎免费精品视频| 亚洲欧美日韩中文无线码 | 久久久久久曰本AV免费免费| 亚洲国产成a人v在线观看| 免费观看亚洲人成网站| 国产一级淫片a免费播放口| 亚洲13又紧又嫩又水多| 亚洲第一区精品日韩在线播放| 美女视频黄的免费视频网页 | 亚洲性猛交XXXX| 国语成本人片免费av无码| 国产精品美女久久久免费 | 亚洲va久久久久| 亚洲另类激情综合偷自拍图| 999国内精品永久免费观看| 色吊丝免费观看网站| 久久av无码专区亚洲av桃花岛| 国产一卡二卡≡卡四卡免费乱码| 午夜免费啪视频在线观看| 男男黄GAY片免费网站WWW| 亚洲天堂一区在线| 一本久久a久久精品亚洲| 性色av免费观看| 日韩精品人妻系列无码专区免费| 午夜亚洲国产精品福利| 亚洲国产精品yw在线观看| 亚洲中文字幕无码爆乳AV| 国产精品自在自线免费观看| 一级毛片免费观看| 一边摸一边爽一边叫床免费视频| 亚洲日日做天天做日日谢| 久久精品国产96精品亚洲| 亚洲国产精品一区二区第一页免| 免费观看成人毛片a片2008| 无码成A毛片免费| 91精品成人免费国产| 黄页网址在线免费观看| 亚洲av永久中文无码精品综合|