Search

Android - HttpURLConnection 基本教學 取得網頁資料(HTML, XML, JSON)

2015-10-31 11:27 AM

若要在 Android 內實作 HttpRequest 方法有很多種

但其實最簡單的方式就是使用內建的 HttpURLConnection 來實作

不需要引入其他 Library, 也沒有甚麼前置作業

以下就使用 HttpURLConnection 示範如何實作 HttpGet 要求

並取得網頁內容

不論是 HTML, XML, JSON 方法都相同 不同的地方在於取得內容後的解析方式

此處將止於取得內容字串

若遇到https轉址失效可查看這篇教學

使用 HttpURLConnection 自動轉址失效的解決方式

若要處理 JSON 格式字串可以查看這篇教學

JSON 資料解析基本教學

程式碼範例
String urlString = "https://www.google.com.tw/";
HttpURLConnection connection = null;

try {
    // 初始化 URL
    URL url = new URL(urlString);
    // 取得連線物件
    connection = (HttpURLConnection) url.openConnection();
    // 設定 request timeout
    connection.setReadTimeout(1500);
    connection.setConnectTimeout(1500);
    // 模擬 Chrome 的 user agent, 因為手機的網頁內容較不完整
    connection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36");
    // 設定開啟自動轉址
    connection.setInstanceFollowRedirects(true);

    // 若要求回傳 200 OK 表示成功取得網頁內容
    if( connection.getResponseCode() == HttpsURLConnection.HTTP_OK ){
        // 讀取網頁內容
        InputStream     inputStream     = connection.getInputStream();
        BufferedReader  bufferedReader  = new BufferedReader( new InputStreamReader(inputStream) );

        String tempStr;
        StringBuffer stringBuffer = new StringBuffer();

        while( ( tempStr = bufferedReader.readLine() ) != null ) {
            stringBuffer.append( tempStr );
        }

        bufferedReader.close();
        inputStream.close();

        // 取得網頁內容類型
        String  mime = connection.getContentType();
        boolean isMediaStream = false;

        // 判斷是否為串流檔案
        if( mime.indexOf("audio") == 0 ||  mime.indexOf("video") == 0 ){
            isMediaStream = true;
        }

        // 網頁內容字串
        String responseString = stringBuffer.toString();
    }
} catch (IOException e) {
    e.printStackTrace();
}
finally {
    // 中斷連線
    if( connection != null ) {
        connection.disconnect();
    }
}
各項資料連結
Android - 使用 HttpURLConnection 自動轉址失效的解決方式
Java - JSON 資料解析基本教學
Android HttpURLConnection

No comments:

Post a Comment