Android Volley 教學 (Kotlin 篇)

常見的 HTTP 網路資料請求連線套件

名稱參考資料
HttpURLConnectionhttps://developer.android.com/reference/java/net/HttpURLConnection
Volleyhttps://developer.android.com/training/volley
OKHttphttps://square.github.io/okhttp/
Retrofithttps://square.github.io/retrofit/

Volley 官方介紹與使用教學

https://developer.android.com/training/volley

添加 Volley 依賴庫 (dependencies)

在 GRADLE (Module) 層級 dependencies 內加入:

implementation 'com.android.volley:volley:1.1.1'

若想將資料轉成 Gson,可以加入:

implementation 'com.google.code.gson:gson:2.8.6'

若想使用最新版本可以到 mvnrepository 查看最新版號:

權限宣告 (permissions)

連線網路,需在 AndroidManifest.xml 中宣告:

<uses-permission android:name="android.permission.INTERNET" />

JSONPlaceholder 假資料網站

這一次範例我們將使用 JSONPlaceholder 所提供的假資料 RESTful API 來做串接練習。

JSONPlaceholder 提供六種常用資源,如:貼文、照片、用戶…等假資料、。

還有 GET、POST、PUT、PATCH、DELETE 等 HTTP 請求方法可以使用。

其中可以透過呼叫 https://jsonplaceholder.typicode.com/posts 可以得到回應格式為 json 的資料。

[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  ...
  ...
  ...
]

Post 資料類別

根據上面的 json 回應資料,我們可以設計出我們的 Post.kt 資料類別為:

data class Post(
    var id: String,
    var title: String,
    var body: String,
    var userId: String
)

Volley 基本拉資料方式

val queue = Volley.newRequestQueue(this)
val url = "https://wwwjsonplaceholder.typicode.com/posts"

val stringRequest = StringRequest(
    Request.Method.GET, url,
    Response.Listener<String> { response ->
        Log.d("HKT", "Response: $response")
    },
    Response.ErrorListener { error ->
        Log.d("HKT", "error: $error")
    })

queue.add(stringRequest)

Volley 將資料轉 Gson 方式

val queue = Volley.newRequestQueue(this)
val url = "https://jsonplaceholder.typicode.com/posts"

val stringRequest = StringRequest(
    Request.Method.GET, url,
    Response.Listener<String> { response ->
        val posts: List<Post> = Gson().fromJson(response, Array<Post>::class.java).toList()
        for (item in posts) {
            Log.d("HKT", "id: " + item.id)
            Log.d("HKT", "title: " + item.title)
            Log.d("HKT", "body: " + item.body)
            Log.d("HKT", "userId: " + item.userId)
        }
    },
    Response.ErrorListener { error ->
        Log.d("HKT", "error: $error")
    })
queue.add(stringRequest)

常見錯誤

Q1

Trying to parse JSON data from URL : Unable to resolve host “jsonplaceholder.typicode.com”: No address associated with hostname

若發生以上類似錯誤,有可能你忘記在 AndroidManifest 宣告,使用網路權限,另外一個就是你的網路不通。

贊助我們

創作不易,知識無價,免費線上教學就像顆種子,希望藉由您的支持與贊助,能夠無後顧之憂的日漸茁壯,努力前行堅持下去。不論捐贈金額的大小,我們都由衷的感謝每位贊助者,都是我們推廣知識、開放共享知識最大的動力!

您的捐贈將用於:請作者喝杯咖啡,鼓勵繼續創作,持續上傳教學影片與更多新技術文章。

Line Pay 打賞


(由 Line Pay 支付平台,提供一卡通轉帳服務)

街口打賞


(由街口行動支付平台,提供轉帳服務)

超商代碼繳費打賞

(由綠界科技支付平台,提供超商繳費代碼)

相關連結

HKT 線上教室 每週六日 更新影片
▶ YouTube 頻道
https://goo.gl/3f2pJi
▶ KT 線上教室 臉書粉絲團
https://goo.gl/27H9Li
▶ Udemy 頻道
http://bit.ly/2ZNdnrt
▶ 贊助我們
https://goo.gl/FiKXAu

從零開始學 Dart 程式設計 線上影片教學(完整版)
🎬 http://bit.ly/32toHt3

Flutter 程式設計入門實戰 30 天 線上影片教學(完整版)
🎬 http://bit.ly/2t1SjBu

從零開始學 Java 程式設計 線上影片教學(完整版)
🎬 http://bit.ly/376wXCx

從零開始學 kotlin 程式設計 線上影片教學(完整版)
🎬 http://bit.ly/2ODUanq

APP / Dart / Flutter / Android Studio
Android / iOS / Java / Kotlin / 教學 / 開發


這個網誌中的熱門文章

nano 文字編輯器

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

16天記下7000單字

Android Studio 歷代版本下載點

【從零開始學 Dart 程式設計】安裝 Dart 開發環境