如何在Android上建立HTTP GET連線

在Android上建立一個HTTP GET連線,是最基本也是最重要的功能,因為你可以透過HTTP GET讓你的APP連上網際網路取得所需要的資源。實作的方式有很多種,在此介紹利用Java.net的類別,urlConnection來建立一個HTTP GET連線。

1. 設計步驟流程:
  • 設定urlConnection
  • 連線
  • 讀取回傳結果值
2. Android存取權限:
  • android.permission.INTERNET

3. 程式編寫提示:
 
       URL url = new URL("http://www.google.com");  
       //要連線的網址  
       URLConnection urlConnection = url.openConnection();  
       URLConnection.setDefaultRequestProperty("Content-type", "text/html; charset=utf8");  
       InputStream in = new BufferedInputStream(urlConnection.getInputStream());  
       //使用InputStream來接收HTTP server傳回結果  
        
       if(in != null){  
         int dleng = 0;  
         byte[] databuffer = new byte[100];  
         byte[] htmldata = new byte[0];  
         int htmldata_leng = 0;  
         do  
         //利用do-while迴圈來處理傳回值  
         {  
           dleng = in.read(databuffer);  
           if (dleng > 0){  
             htmldata_leng += dleng;  
             byte[] tempbuffer = new byte[htmldata_leng];  
             System.arraycopy(htmldata, 0, tempbuffer, 0, htmldata.length);  
             System.arraycopy(databuffer, 0, tempbuffer, htmldata.length, dleng);  
             htmldata = tempbuffer;  
             //最後結果儲存在htmldata裡  
           }  
         }while(dleng > 0);  
       }  

4. 範例程式執行:

抓取Google首頁後將HTML內容直接印出在一個TextView中,下列圖示為範例程式執行後的螢幕擷取畫面。




    留言

    1. 版主您好,
      我是Android的新手,run了您的code之後,在Eclipse出現
      Multiple markers at this line
      - URL cannot be resolved to a type
      - URL cannot be resolved to a type
      等等的錯誤訊息,可以麻煩版主把詳細的code po出來嗎,或是寄給我actsaifox@gmail.com
      非常感謝

      回覆刪除
    2. 我再將整個project寄給你參考。
      你的輸入的URL是如何?

      回覆刪除
    3. 請問版主如何把Android的值傳至PHP在丟到MySQL儲存?

      回覆刪除
      回覆
      1. 如何把Android client端的變數值傳至MySQL資料庫儲存,傳輸實作的方法有很多種。簡單的實作方式,為透過HTTP協定來完成這件事情。

        實現的步驟如下:

        1. [Android client端]使用HTTP GET/POST將變數的直傳送到web server
        2. [Web server端]使用PHP程式(透過$_GET[]/$_POST[]變數)接收來自Android client的結果
        3. [Web server端]使用PHP程式,將接收結果寫入MySQL DB

        刪除

    張貼留言

    這個網誌中的熱門文章

    如何關閉nouveau-kernel-driver,解決無法安裝Nvidia driver問題

    如何在Nginx所設置的Proxy中可以取得真實客戶的IP位址

    如何客製VMware ESXi安裝光碟(加入Realtek驅動程式)