[轉] java實現https請求

來源:互聯網
上載者:User

標籤:detail   secure   dog   oid   stat   psutil   data   ini   代碼   

package com.lichmama.test.util;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.KeyManager;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;public class HttpsUtil {    private static final class DefaultTrustManager implements X509TrustManager {        @Override        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {        }        @Override        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {        }        @Override        public X509Certificate[] getAcceptedIssuers() {            return null;        }    }    private static HttpsURLConnection getHttpsURLConnection(String uri, String method) throws IOException {        SSLContext ctx = null;        try {            ctx = SSLContext.getInstance("TLS");            ctx.init(new KeyManager[0], new TrustManager[] { new DefaultTrustManager() }, new SecureRandom());        } catch (KeyManagementException e) {            e.printStackTrace();        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        }        SSLSocketFactory ssf = ctx.getSocketFactory();        URL url = new URL(uri);        HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();        httpsConn.setSSLSocketFactory(ssf);        httpsConn.setHostnameVerifier(new HostnameVerifier() {            @Override            public boolean verify(String arg0, SSLSession arg1) {                return true;            }        });        httpsConn.setRequestMethod(method);        httpsConn.setDoInput(true);        httpsConn.setDoOutput(true);        return httpsConn;    }    private static byte[] getBytesFromStream(InputStream is) throws IOException {        ByteArrayOutputStream baos = new ByteArrayOutputStream();        byte[] kb = new byte[1024];        int len;        while ((len = is.read(kb)) != -1) {            baos.write(kb, 0, len);        }        byte[] bytes = baos.toByteArray();        baos.close();        is.close();        return bytes;    }    private static void setBytesToStream(OutputStream os, byte[] bytes) throws IOException {        ByteArrayInputStream bais = new ByteArrayInputStream(bytes);        byte[] kb = new byte[1024];        int len;        while ((len = bais.read(kb)) != -1) {            os.write(kb, 0, len);        }        os.flush();        os.close();        bais.close();    }    public static byte[] doGet(String uri) throws IOException {        HttpsURLConnection httpsConn = getHttpsURLConnection(uri, "GET");        return getBytesFromStream(httpsConn.getInputStream());    }    public static byte[] doPost(String uri, String data) throws IOException {        HttpsURLConnection httpsConn = getHttpsURLConnection(uri, "POST");        setBytesToStream(httpsConn.getOutputStream(), data.getBytes());        return getBytesFromStream(httpsConn.getInputStream());    }}

 

下載個檔案(bing今日美圖)測試下:

public class TestHttps {        public static void main(String[] args) throws IOException {        String uri = "https://cn.bing.com/hpwp/356677bea977a9aa166a92ab94848f17";        byte[] bytes = HttpsUtil.doGet(uri);        FileOutputStream fos = new FileOutputStream("D:/bing.picture-of-day.jpg");        fos.write(bytes);        fos.close();        System.out.println("done!");    }}

 

 

在weblogic中使用如上代碼時,可能會出現ClassCastException,詳情及解決方案可查看以下連結:

http://www.th7.cn/Program/java/201511/688262.shtmlhttp://blog.csdn.net/arvinrong/article/details/7715334[

[轉] java實現https請求

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.