OkHttp, gelişmiş HTTP istekleri oluşturmak ve sunucudan gelen yanıtları işlemek için kullanılan bir Java kütüphanesidir. Android uygulamalarında kullanılan en popüler HTTP kütüphanelerinden biridir.
OkHttp, birçok özellik ve avantaj sunar. Örneğin:
- HTTP/2 desteği
- HTTP/1.1 protokolünün özelliklerinin geliştirilmiş desteği
- Asenkron istekler için callback fonksiyonları
- İstekler ve yanıtlar için önbellekleme
- Güvenliği artırmak için SSL desteği
- Basit, anlaşılır ve güçlü bir API
OkHttp, bir OkHttpClient
nesnesi oluşturarak kullanılır. Bu nesne, HTTP istekleri yapmak ve sunucudan yanıtları almak için kullanılır.
val client = OkHttpClient()
val request = Request.Builder()
.url("https://www.example.com")
.build()
val response = client.newCall(request).execute()
val responseBody = response.body?.string()
Log.d("OkHttp", responseBody)
Bu örnekte, OkHttpClient sınıfının örnek bir nesnesi oluşturulur ve Request sınıfı kullanarak bir GET isteği yapılır. Sonra, newCall() fonksiyonu ile istek gönderilir ve execute() fonksiyonu ile sunucudan gelen yanıt alınır. Yanıtın içeriği response.body?.string() fonksiyonu ile alınır ve Log.d() fonksiyonu kullanarak konsola yazdırılır.Örnek bir uygulama geliştirerek OkHttp kütüphanesi nasıl kullanılır birlikte bakalım. Bu örnekte, bir RESTful API'ye GET isteği gönderip, aldığımız verileri bir liste olarak göstereceğiz.
İlk olarak, OkHttp kütüphanesini kullanmak için build.gradle
dosyasına aşağıdaki kodu ekliyoruz:
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
}
Daha sonra, MainActivity sınıfını aşağıdaki gibi düzenliyoruz:
class MainActivity : AppCompatActivity() { private lateinit var recyclerView: RecyclerView private lateinit var progressBar: ProgressBar override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) recyclerView = findViewById(R.id.recyclerView) progressBar = findViewById(R.id.progressBar) // API'den verileri almak için bir fonksiyon çağırıyoruz fetchData() } private fun fetchData() { // OkHttp client oluşturuyoruz val client = OkHttpClient() // API endpoint adresi val url = "https://jsonplaceholder.typicode.com/posts" // API'den GET isteği oluşturuyoruz val request = Request.Builder() .url(url) .build() // İstek asenkron olarak gönderiliyor client.newCall(request).enqueue(object : Callback { override fun onFailure(call: Call, e: IOException) { // İstek başarısız olursa hata mesajı yazdırıyoruz runOnUiThread { Toast.makeText(this@MainActivity, "Er ${e.message}", Toast.LENGTH_SHORT).show() } } override fun onResponse(call: Call, response: Response) { // İstek başarılı olursa verileri işliyoruz val json = response.body?.string() val posts = Gson().fromJson<List<Post>>(json, object : TypeToken<List<Post>>() {}.type) // Verileri RecyclerView'da gösteriyoruz runOnUiThread { recyclerView.adapter = PostAdapter(posts) recyclerView.layoutManager = LinearLayoutManager(this@MainActivity) progressBar.visibility = View.GONE } } }) } }
Bu örnekte,fetchData()
fonksiyonu API endpoint'ine GET isteği gönderiyor ve aldığı verileri bir RecyclerView ile liste şeklinde gösteriyor.
İlk olarak,OkHttpClient
sınıfının bir nesnesi oluşturuluyor veRequest
sınıfı kullanarak bir GET isteği oluşturuluyor.client.newCall(request).enqueue()
fonksiyonu ile istek asenkron olarak gönderiliyor ve istek başarılı veya başarısız olduğunda geri çağrı fonksiyonları çağrılıyor. Başarısız bir istek durumunda, hata mesajı gösteriliyor. Başarılı bir istek durumunda, verileri işlemek içinresponse.body?.string()
fonksiyonu kullanılıyor veGson
kütüphanesi ile JSON verileri birList<Post>
listesine dönüştürülüyor.
0 Yorumlar
Bizimle fikirlerinizi paylaşabilirsiniz.