2011년 9월 1일 목요일

jsp 소스 ssl증명서 없는 rss 가지고오기

<%@ page contentType = "text/html; charset=utf-8"%>
<%@ page import="java.io.*"  %>
<%@ page import="java.net.*"  %>
<%@ page import="javax.net.ssl.*" %>
<%
    // 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);
        request.setAttribute("msg", 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[] {};
            }

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

            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() {
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
};
%>
${msg}

댓글 없음:

댓글 쓰기