'https'에 해당되는 글 1건

  1. 2010.04.25 [Android/Java] 어디선가 검색해서 주워온 https요청 코드-_- (5)
 
https를 아직 이해를 못해서.....-_-
일단 기록용으로-_-













[code]
public class Test extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        StringBuilder content = new StringBuilder();
       
        try
        {
            String data = "userid=???&password=???";
            URL url = new URL("https://url~~");
           
            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();
            }
            http.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(http.getOutputStream());
            wr.write(data);
            wr.flush();
           
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(http.getInputStream()));

            String line;

            while ((line = bufferedReader.readLine()) != null)
            {
              content.append(line + "\n");
            }
            Log.i("content", content.toString());
            wr.close();
            bufferedReader.close();
        }
        catch(Exception e)
        {
        }
    }
   
    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;
        }
    };
}
[/code]
 
Posted by 머드초보

댓글을 달아 주세요

  1. 승군 2010.11.05 16:51  댓글주소  수정/삭제  댓글쓰기

    머드초보님 코드 덕분에 제가 살았습니다.
    정말 감사합니다 ㅠㅠ

    • 머드초보 2010.11.05 21:21  댓글주소  수정/삭제

      아~ 도움이 되셔서 다행이네요
      저도 이거 https요청에 대해서 구글링한거 그냥 적어놓은거라는^^
      방문해주셔서 감사해요~

  2. BlogIcon 도플광어 2010.11.30 17:16  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 저도 살앗네요^^;

  3. 초보개발자 2011.07.04 21:25  댓글주소  수정/삭제  댓글쓰기

    오호~ 저도 잘몰라서 이것저것 했는데 실패했는데
    이걸로 성공했네요ㅠㅠ
    좋은 소스 감사합니다^^