Kotlin:
ส่งคำขอ HTTP
วิธีทำ:
Kotlin ทำให้การร้องขอ HTTP เป็นเรื่องง่าย นี่คือตัวอย่างพื้นฐานโดยใช้ khttp
, ไลบรารีที่ใช้งานง่าย:
import khttp.get
fun main() {
val response = get("https://api.github.com/users/octocat/orgs")
println(response.text)
}
ผลลัพธ์:
[{"login":"octo-org","id":583231,"url":"https://api.github.com/orgs/octo-org", ...}]
สำหรับความต้องการที่มากขึ้น, นี่คือตัวอย่างโค้ดโดยใช้ ktor
, เฟรมเวิร์กของ Kotlin, เพื่อดึงข้อมูลอย่างไม่ต้องรอตอบสนอง:
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.request.*
suspend fun main() {
val client = HttpClient(CIO)
val response: String = client.get("https://api.github.com/users/octocat/orgs")
println(response)
client.close()
}
ผลลัพธ์คล้ายกับตัวอย่างแรก
ลงลึก
ไลบรารี khttp
เป็นเครื่องมือที่สะดวก, ได้รับการออกแบบตาม requests
ใน Python ทำให้เป็นเหมาะสำหรับสคริปต์ขนาดเล็กแต่ไม่ได้รับการดูแลอย่างต่อเนื่อง ktor
เป็นโปรเจกต์ใหม่ที่ยังมีการพัฒนาอย่างต่อเนื่องโดย JetBrains, ถูกออกแบบมาเพื่อการใช้งานอะซิงโครนัสด้วยโครูตีน มีไว้สำหรับแอปที่ขยายได้ ทั้งสองจัดการกับคำขอ HTTP แต่รองรับกรณีการใช้งานที่แตกต่างกัน
ในอดีต, การร้องขอ HTTP ใน Kotlin ทำเลียบเคียงกับไลบรารีของ Java เช่น HttpURLConnection
หรือ HttpClient
ของ Apache ซึ่งยังถือว่าใช้ได้แต่มีความละเอียดและไม่มีคุณสมบัติของภาษา Kotlin
สำหรับการนำไปใช้งาน, จำไว้ว่าต้องจัดการกับข้อผิดพลาด HTTP ทั่วไปและอ่านรหัสตอบกลับ คุณจะต้องการใช้ try-catch
สำหรับข้อยกเว้นทางเครือข่าย และอาจต้องการทำงานกับหัวข้อและพารามิเตอร์การค้นหา
ดูเพิ่มเติม
- เอกสารการใช้งาน Ktor: https://ktor.io/
- ที่เก็บข้อมูล GitHub ของ khttp: https://github.com/jkcclemens/khttp (หมายเหตุสถานะการดูแลรักษา)
- การเรียก HTTP ด้วย HttpURLConnection ใน Kotlin: https://kotlinlang.org/api/latest/jvm/stdlib/java.net/-http-u-r-l-connection/