android 에서 Https 접근 모듈 정리 Programming

혹시 필요하신 분이 계실지 몰라서 미리 공유합니다.
안드로이드는 아이폰에 비해서 네튁이 강하더군요.
예를 들자면 멀티미디어 학과 학생이라면 아이폰을 공부하시는게 좋겠고.
전산학과나 컴공학과 학생들은 안드로이드를 해야할듯합니다.

안드로이드냐 아이폰이냐 따지기전에 자기특기에 적합한 플랫폼을 선택 하시면 될듯합니다.


정적함수인 DownloadHtml 가  스트링형태로 html문서내용을 리턴해줍니다. 페이지에따라 시간이 오래 걸릴수 있으니 쓰레드를 활용 하셔야 합니다.
Thread의 run 함수에 넣고 사용 하시면 됩니다.

package ukg.network.http;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import android.util.Log;
/*
 작성자 : 도플광어
 설명 : 안드로이드 용  html 다운로더 모듈 (https 도 지원함)
 */
public class CHttpUtil {

public static String DownloadHtml(String addr) {
StringBuilder html = new StringBuilder(); 
try {
URL url = new URL("addr);
//HttpURLConnection conn = (HttpURLConnection)url.openConnection();
HttpURLConnection conn = null; 
            
            if (url.getProtocol().toLowerCase().equals("https")) { 
                trustAllHosts(); 
                HttpsURLConnection https = (HttpsURLConnection) url.openConnection(); 
                https.setHostnameVerifier(DO_NOT_VERIFY); 
                conn = https; 
            } else { 
             conn = (HttpURLConnection) url.openConnection(); 
            } 
if (conn != null) {
conn.setConnectTimeout(10000);
conn.setUseCaches(false);
int resultcode = conn.getResponseCode();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
for (;;) {
String line = br.readLine();
if (line == null) break;
html.append(line + '\n'); 
}
br.close();
}
conn.disconnect();
}
catch (Exception ex) {
Log.i("error",ex.getMessage());
return ex.getMessage();
//System.out.println(ex.getMessage());
}
return html.toString();
}
    
    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 arg0, SSLSession arg1) {
// TODO Auto-generated method stub
return true;
    }; 
}

[출처] adroid 에서 Https 접근 모듈 정리 해봤습니다. (게임 개발자 네트워크 (jzsdn)) |작성자 도플광어

이 글과 관련된 글
  1. [2011/12/08] 안드로이드 비행모드 확인 코드 by 운학귀신 (278)
  2. [2011/12/07] [안드로이드] 페이퍼 카메라 by 지대팬돌 (1351)
  3. [2011/05/26] Android ADT & SDK 설치 by 운학귀신 (1166, 1)
  4. [2011/05/21] 고팀장님 특별과외 I - HTML by 곰이아빠 (2162, 1) *1
  5. [2011/02/12] Desire HD. 커스텀롬을 먹다. by Lawliet (6770, 1) *2
TAG

Leave Comments



T-NAVI