2011년 9월 1일 목요일

java ssl 증명서 없는 rss 가지고 오기.

import java.io.*;
import java.net.*;
import javax.net.ssl.*;

public class testClass {
   
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String urlStr = "https://car.jp.msn.com/rss/business.aspx";
        try{
            URL url = new URL(urlStr);
            HttpURLConnection http = null;
           
            if (url.getProtocol().toLowerCase().equals("https")) {
                trustAllHosts();
                HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
                https.setHostnameVerifier(DO_NOT_VERIFY);
                http = https;
            } else {
                http = (HttpURLConnection) url.openConnection();
            }
           
            BufferedInputStream bis = new BufferedInputStream(http.getInputStream());
            byte[] buffer = new byte[2048];
            int length = 0;
            byte[] contentBytes = null;
            ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
            while ((length = bis.read(buffer)) >= 0) {
                    baos.write(buffer, 0, length);
            }
           
            contentBytes = baos.toByteArray();
            String result = new String(contentBytes, "utf-8");       
           
            System.out.println(result);
           
            bis.close();
            baos.close();
       
        }catch(Exception e) {
            e.printStackTrace();
        }
       
    }

    private static void trustAllHosts() {
        // Create a trust manager that does not validate certificate chains
        TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return new java.security.cert.X509Certificate[] {};
                }

                @Override
                public void checkClientTrusted(
                        java.security.cert.X509Certificate[] chain,
                        String authType)
                        throws java.security.cert.CertificateException {
                    // TODO Auto-generated method stub
                  
                }

                @Override
                public void checkServerTrusted(
                        java.security.cert.X509Certificate[] chain,
                        String authType)
                        throws java.security.cert.CertificateException {
                    // TODO Auto-generated method stub
                  
                }
        } };

        // Install the all-trusting trust manager
        try {
                SSLContext sc = SSLContext.getInstance("TLS");
                sc.init(null, trustAllCerts, new java.security.SecureRandom());
                HttpsURLConnection
                                .setDefaultSSLSocketFactory(sc.getSocketFactory());
        } catch (Exception e) {
                e.printStackTrace();
        }
    }
  
    final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
        @Override
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };
}

댓글 없음:

댓글 쓰기