網頁讀取與後端資料庫存取介紹
講授:洪國龍老師

回首頁   XAMPP & JSON   使用Android讀取後端資料庫   傳遞參數到伺服端  

  1. XAMPP & JSON

  • XAMPP簡介
  • XAMPP是一個把Apache網頁伺服器與PHP、Perl及MySQL集合在一起的安裝包,允許用戶可以在自己的電腦上輕易的建立網頁伺服器。
  • XAMPP安裝
  • XAMPP啟動
  • 執行phpMyAdmin
  • php & mysql
  • 輸出結果:
  • 什麼是JSON
  • JSON(JavaScript Object Notation)是一種羽量級的資料交換格式,易於閱讀和編寫,同時也易於機器解析和生成,非常適合於伺服器與用戶端的交互。
  • JSON採用與程式設計語言無關的文本格式,但是也使用了類C語言的習慣,這些特性使JSON成為理想的資料交換格式。
  • 和 XML 一樣,JSON 也是基於純文字的資料格式。JSON的資料格式非常簡單,您可以用 JSON 傳輸一個簡單的 String,Number,Boolean,也可以傳輸一個陣列,或者一個複雜的Object 物件。
  • JSON 的優點
  • 相容性高
  • 格式容易瞭解,閱讀及修改方便
  • 支援許多資料格式 (number,string,booleans,nulls,array,associative array)
  • 許多程式都支援函式庫讀取或修改 JSON 資料
  • JSON 物件的範例
  • JSON 陣列的範例
  • JSON 物件陣列的範例
  • PHP, mysql與JSON範例
  • 輸出結果:
  • [ 回頂端 ]

    1. 使用Android讀取後端資料庫

  • Android的HTTP請求
  • 開啟網路限制
    • 如果APP會使用網路功能,則要開啟網路限制。

  • 使用Appache HttpClient相關類別
  • 以往,使用Appache HttpClient相關類別可以發出Http請求及接收Http回應,然而,在API 23以後的版本,Google已經移除了Apache Http相關的類別,而推荐使用HttpUrlConnection。
  • 但因Appache HttpClient使用上較簡單,如果需要在Android studio繼續使用Appache HttpClient,只要在相對應的module下的build.gradle中加入下面文字即可。
  • build.gradle(Module:app)

  • 發出HTTP請求
  • 產生一個HttpClient類別物件
  • 產生一個HTTP請求
  • HttpGet
  • HttpPost
  • 設定HTTP請求參數
  • names/values
  • 發出HTTP請求
  • 處理請求結果
  • HttpClient與HttpGet類別
  • 讀取網頁字串
  • 在模擬器中,android要與本機的php server連繫,不能使用127.0.0.1或localhost,而要使用真實ip;
  • 主執行緒與網路操作
  • 從Android 3.0開始,Thread Policy加強了限制,只要嘗試在主執行緒中進行網路操作,就會產生NetworkOnMainThreadException這個錯誤。
  • 解決方式有下列兩種方式:
  • 在onCreate()中加入下列程式,透過StrictMode重新設定ThreadPolicy。
  • 把網路操作從主執行緒中移走,並產生一個新Thread來執行(後面介紹)。
  • 為了程式簡單,可以先使用下面指令,讓Thread Policy的限制解除(暫時使用,最好還是使用另外的執行緒來進行網路操作。)
  • 解析JSON資料
  • 完整範例:
  • [ 回頂端 ]

    1. 傳遞參數到伺服端

  • PHP新增記錄範例
  • 加入HTTP請求參數(Name/Value)
    • HttpGet傳遞參數的缺點
      1. 傳遞資料的內容出現在url的參數上,容易洩漏。
      2. url參數的長度有所限制(2048個bytes)。
  • HttpPost傳遞參數
  • 範例:
  • 使用另外的執行緒(Thread)來讀取網頁
    • 透過new一個Thread物件並呼叫它的start()方法來啟動另外一個執行緒(非主執行緒),此執行緒會執行自己run()方法的程式碼。
    • 非主執行緒不能直接使用UI元件,此時可以使用Handler物件,POST訊息(i.e. Runnable物件)回主執行緒, 主執行緒再執行Runnable物件的run()方法,來使用UI元件或顯示訊息。
    [ 回頂端 ]