[Kotlin] android studio 讀取網頁資料(使用OkHttp套件)

JavaScript可以看這一篇JavaScript 讀取網頁json

這次換用Kotlin,資料一樣使用新北市垃圾車

要在Android裡面讀取網路資料需要一些設定,可是如果我們使用OkHttp套件就可以省去很多麻煩,如果有機會再來介紹不使用套件的方式

聲明需要網路權限

首先因為我們是用android studio示範,而Android裡面有權限的限制,所以我們需要先去AndroidManifest.xml這個檔案裡面聲明我們需要網路權限(如果只是寫Kotlin專案而不是Android的App就可以跳過這一步)
開啟 AndroidManifest.xml 加入這行
<uses-permission android:name="android.permission.INTERNET"/>

導入OkHttp函式庫

打開 build.gradle(Module:app) 檔案,在最下面dependencies裡面加入這行
implementation "com.squareup.okhttp3:okhttp:4.9.0"
 然後點選右上角的 Sync Now 來自動載入函式庫


程式碼

打開MainActivity輸入完整程式碼後點選執行,如果順利的話下面就會跳出讀取到的資料
(文章後面有附上完整程式碼和簡易錯誤解決方式)



常見錯誤解決方式

常見問題一:
CoroutineScope(Dispatchers.IO)這行老是出現紅色底線,一直出現錯誤
回到build.gradle(Module:app),在dependencies裡面新增這行並且按下Sync Now,等待自動載入函式庫後即可(詳細資訊)
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8'

常見問題二:
java.lang.SecurityException: Permission denied (missing INTERNET permission?)

AndroidManifest.xml沒有聲明需要網路權限
在 AndroidManifest.xml 加入這行
<uses-permission android:name="android.permission.INTERNET"/>

常見問題三:

java.net.UnknownServiceException: CLEARTEXT communication to data.ntpc.gov.tw not permitted by network security policy

Android 9 (API level 28)以後默認禁用http,改用https即可

留言