Kotlin में HTTP क्लाइंट: A से Z तक सही तरीके से अनुरोध करना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin में HTTP क्लाइंट: A से Z तक सही तरीके से अनुरोध करना



आधुनिक Kotlin विकास नेटवर्क इंटरैक्शन के बिना अधूरा है। चाहे वह Android एप्लिकेशन हो, Ktor पर सर्वर-साइड समाधान हो, या डेस्कटॉप एप्लिकेशन — HTTP अनुरोध डेटा आदान-प्रदान का मुख्य तरीका बना हुआ है। इस लेख में, हम Kotlin में HTTP क्लाइंट को सही तरीके से व्यवस्थित करने, लोकप्रिय लाइब्रेरीज़ और सर्वोत्तम प्रथाओं पर चर्चा करेंगे।



Kotlin HTTP अनुरोधों के लिए आदर्श क्यों है?



Kotlin आधुनिक सिंटैक्स, शून्य सुरक्षा और Java इकोसिस्टम के साथ पूर्ण संगतता प्रदान करता है। कोरूटीन और स्ट्रीमिंग API के कारण, नेटवर्क के साथ काम करना साफ और अतुल्यकालिक हो जाता है। मुख्य लाभ:



  • कोरूटीन — बिना ब्लॉकिंग के अतुल्यकालिक संचालन के लिए हल्के थ्रेड
  • Type-safe builders — HTTP अनुरोधों का सुविधाजनक निर्माण
  • Sealed classes — प्रतिक्रिया स्थितियों का सुरुचिपूर्ण प्रबंधन
  • Extension functions — लाइब्रेरीज़ की कार्यक्षमता का विस्तार


Kotlin के लिए HTTP क्लाइंट का चयन



आज, तीन लाइब्रेरीज़ Kotlin इकोसिस्टम में हावी हैं: OkHttp, Ktor Client और Retrofit। आइए कोड उदाहरणों के साथ प्रत्येक पर विचार करें।



1. OkHttp — समय-परीक्षित विकल्प



Square का OkHttp JVM के लिए सबसे लोकप्रिय HTTP क्लाइंट है। यह कुशल है, HTTP/2, स्वचालित संपीड़न और कैशिंग का समर्थन करता है।



// build.gradle.ktsimplementation("com.squareup.okhttp3:okhttp:4.12.0")

// OkHttp के साथ GET अनुरोध का उदाहरणimport okhttp3.OkHttpClientimport okhttp3.Requestimport kotlinx.coroutines.Dispatchersimport kotlinx.coroutines.withContext

class OkHttpExample { private val client = OkHttpClient.Builder() .connectTimeout(30, java.util.concurrent.TimeUnit.SECONDS) .readTimeout(30, java.util.concurrent.TimeUnit.SECONDS) .build()

suspend fun fetchData(url: String): String = withContext(Dispatchers.IO) { val request = Request.Builder() .url(url) .header("Accept", "application/json") .build()

client.newCall(request).execute().use { response -> if (!response.isSuccessful) { throw RuntimeException("त्रुटि: ${response.code}") } response.body?.string() ?: throw RuntimeException("खाली प्रतिक्रिया") } }}


2. Ktor Client — Kotlin के लिए मूल विकल्प



Ktor Client — JetBrains इकोसिस्टम का हिस्सा है, पूरी तरह से Kotlin में लिखा गया है और मल्टीप्लेटफ़ॉर्म का समर्थन करता है। Ktor सर्वर और Android/iOS प्रोजेक्ट्स के लिए आदर्श है।



// build.gradle.ktsimplementation("io.ktor:ktor-client-core:2.3.7")implementation("io.ktor:ktor-client-cio:2.3.7")implementation("io.ktor:ktor-client-content-negotiation:2.3.7")implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7")

import io.ktor.client.*import io.ktor.client.call.*import io.ktor.client.engine.cio.*import io.ktor.client.plugins.contentnegotiation.*import io.ktor.client.request.*import io.ktor.client.statement.*import io.ktor.serialization.kotlinx.json.*import kotlinx.serialization.Serializable

@Serializabledata class Post(val userId: Int, val id: Int, val title: String, val body: String)

class KtorExample { private val client = HttpClient(CIO) { install(ContentNegotiation) { json(Json { ignoreUnknownKeys = true isLenient = true }) } engine { requestTimeout = 30_000 } }

suspend fun getPost(id: Int): Post { val response: HttpResponse = client.get("https://jsonplaceholder.typicode.com/posts/$id") return response.body() }

suspend fun createPost(post: Post): Post { val response: HttpResponse = client.post("https://jsonplaceholder.typicode.com/posts") { setBody(post)

ब्लॉग

पुस्तक अनुशंसाएँ