# okhttp

Published articles for okhttp.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Deconstructing OkHttp

DevFeed: [Deconstructing OkHttp](<https://devfeed.tech/articles/deconstructing-okhttp-32252.md>)

Original publisher: [Read original article](<https://publicobject.com/2026/05/22/deconstructing-okhttp/>)

Author: Jesse Wilson

Published: 2026-05-22T12:00:00Z

Content type: article

Language: en

Sources: [Public Object](<https://devfeed.tech/sources/public-object.md>)

Topics: [Library](<https://devfeed.tech/topics/library.md>), [Network](<https://devfeed.tech/topics/network.md>), [Code](<https://devfeed.tech/topics/code.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [certificates](<https://devfeed.tech/topics/certificates.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [cache](<https://devfeed.tech/tags/cache.md>), [certificates](<https://devfeed.tech/tags/certificates.md>), [https](<https://devfeed.tech/tags/https.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kotlinconf](<https://devfeed.tech/tags/kotlinconf.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [library](<https://devfeed.tech/tags/library.md>), [network](<https://devfeed.tech/tags/network.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [performance](<https://devfeed.tech/tags/performance.md>), [presentation](<https://devfeed.tech/tags/presentation.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

A KotlinConf talk examines OkHttp's implementation rather than its basic usage, covering interceptor-based architecture, connection lifecycles, cache state machines, URL decoders, HTTPS testing certificates, performance, and extension mechanisms.

### Source excerpt

I presented this at KotlinConf on May 22, 2026. Also available on slides, YouTube, and Speaker Deck. OkHttp is a popular library for making network calls. You might use it directly, or with Ktor, Retrofit, Coil, or gRPC. But this is not a talk on how to use OkHttp. Instead,

## Kotlin Multiplatform test interceptors with Burst

DevFeed: [Kotlin Multiplatform test interceptors with Burst](<https://devfeed.tech/articles/kotlin-multiplatform-test-interceptors-with-burst-29006.md>)

Original publisher: [Read original article](<https://code.cash.app/burst-test-interceptors>)

Author: Jesse Wilson

Published: 2025-09-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Cash App Code Blog](<https://devfeed.tech/sources/cash-app-code-blog.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [http](<https://devfeed.tech/tags/http.md>), [junit](<https://devfeed.tech/tags/junit.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-android](<https://devfeed.tech/tags/kotlin-android.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [snapshot](<https://devfeed.tech/tags/snapshot.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [timeout](<https://devfeed.tech/tags/timeout.md>)

### AI overview

This article introduces Burst 2.8's Kotlin Multiplatform test interceptors, an alternative to JUnit rules for reusing behavior across tests on Kotlin platforms. It also describes interception of suspending tests.

### Source excerpt

Interceptors are like JUnit rules, but for every Kotlin platform

## Using Ollama and Kotlin to migrate multiple files into a new library

DevFeed: [Using Ollama and Kotlin to migrate multiple files into a new library](<https://devfeed.tech/articles/using-ollama-and-kotlin-to-migrate-multiple-files-into-a-new-library-28715.md>)

Original publisher: [Read original article](<https://le0nidas.gr/2025/03/09/using-ollama-and-kotlin-to-migrate-multiple-files-into-a-new-library/>)

Author: Leonidas Partsas

Published: 2025-03-09T16:26:35Z

Content type: tutorial

Language: en

Sources: [le0nidas](<https://devfeed.tech/sources/le0nidas.md>)

Topics: [Ollama](<https://devfeed.tech/topics/ollama.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>), [Library](<https://devfeed.tech/topics/library.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [api](<https://devfeed.tech/tags/api.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [llm](<https://devfeed.tech/tags/llm.md>), [migration](<https://devfeed.tech/tags/migration.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [ollama](<https://devfeed.tech/tags/ollama.md>), [til](<https://devfeed.tech/tags/til.md>)

### AI overview

The article describes using Ollama with Kotlin to migrate a project from LoganSquare to kotlinx.serialization across multiple files. It outlines a workflow that loads file contents, sends them with prompts to a local LLM, and writes the results back, using OkHttp and kotlinx.serialization to communicate with Ollama.

### Source excerpt

At work, there is a need to migrate our project from using LoganSquare to kotlinx.serialization. Part of the work involves replacing the annotations the first library is using with the ones from the second. Unfortunately some cases are not as simple as replacing foo with boo. For example, a property must be annotated with @JsonField(name ... Continue reading Using Ollama and Kotlin to migrate multiple files into a new library ->

## Sharing Thread Pools Across Libraries in Android Applications

DevFeed: [Sharing Thread Pools Across Libraries in Android Applications](<https://devfeed.tech/articles/reduce-reuse-recycle-your-thread-pools-25909.md>)

Original publisher: [Read original article](<https://chao2zhang.medium.com/reduce-reuse-recycle-your-thread-pools-%EF%B8%8F-81e2f54d8a1d?source=rss-d19045640fe------2>)

Author: Chao Zhang

Published: 2021-12-20T18:26:36Z

Content type: tutorial

Language: en

Sources: [Stories by Chao Zhang on Medium](<https://devfeed.tech/sources/stories-by-chao-zhang-on-medium.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Android](<https://devfeed.tech/topics/android.md>), [Library](<https://devfeed.tech/topics/library.md>), [App](<https://devfeed.tech/topics/app.md>), [Network](<https://devfeed.tech/topics/network.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [app-performance](<https://devfeed.tech/tags/app-performance.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [memory](<https://devfeed.tech/tags/memory.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [overhead](<https://devfeed.tech/tags/overhead.md>), [performance](<https://devfeed.tech/tags/performance.md>), [thread](<https://devfeed.tech/tags/thread.md>), [threading](<https://devfeed.tech/tags/threading.md>), [threads](<https://devfeed.tech/tags/threads.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

This Android development tutorial explains how creating threads for asynchronous tasks can increase memory pressure, scheduling overhead, and context-switching costs. It discusses using thread pools and proposes configuring libraries such as OkHttp and AndroidX WorkManager to share a common pool, while considering the benefits and costs.

### Source excerpt

Photo: Héctor J. Rivas from Unsplash Real-world applications today are mostly multi-threaded. This means developers should be mindful of managing the concurrency of their applications. Mastering the threading can help boost an app's performance. On the other hand, using concurrency without fully understanding it could lead to problems that negatively impact the app's health. For Android applications, every thread is mapped to a system-level thread at runtime. Each thread costs a minimum of 64k of memory on Android, If we always create a thread for any new asynchronous task, we will create memory pressure on the app. The app performance may suffer because spawning up new threads and context switching among threads are both taking up time and resources. If a thread is referenced even if it is not active, it will be kept in memory and can't be cleaned up by the garbage collector. Thread pools can help us manage concurrency more efficiently. ThreadPoolExecutor creates a pool of worker threads and schedules the tasks for them to execute. It can grow the pool size to meet the demand as new tasks arrive, and it can shrink the pool when threads are idle and no longer need to be kept alive. Thread pool, therefore, improves the app performance by reducing the per-task overhead and controls the resource usage by bounding the resources. Thread pool seems the solution to our concurrency headache, and many libraries have adopted this technique, such as OkHttp and AndroidX WorkManager. Each library maintains its own thread pool by default. When we include these libraries in our application, since each library spins up new threads by itself without the awareness of other thread pools, we come full circle. Hundreds of threads exist in our application because those libraries do not know each other. In this story, we are going to walk through an example of configuring libraries to share a common thread pool. We will also summarize the benefits and costs of managing thread pools, as it

## Adventures in Tracking Upload Progress With OkHttp and Retrofit

DevFeed: [Adventures in Tracking Upload Progress With OkHttp and Retrofit](<https://devfeed.tech/articles/adventures-in-tracking-upload-progress-with-okhttp-and-retrofit-27034.md>)

Original publisher: [Read original article](<https://dev.to/zsmb13/adventures-in-tracking-upload-progress-with-okhttp-and-retrofit-1gff>)

Author: Márton Braun

Published: 2021-12-10T16:00:00Z

Content type: tutorial

Language: en

Sources: [zsmb.co](<https://devfeed.tech/sources/zsmb-co.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Usability](<https://devfeed.tech/topics/usability.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [networking](<https://devfeed.tech/tags/networking.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [software](<https://devfeed.tech/tags/software.md>), [usability](<https://devfeed.tech/tags/usability.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

This article explains how Stream's Android team refined file-upload progress tracking in the Stream Chat Android SDK. It presents an initial Retrofit and OkHttp callback-based implementation, discusses its usability issues, and describes a cleaner implementation using a custom OkHttp request body with progress callbacks.

### Source excerpt

Tracking file upload progress can have some unexpected complexities. This article tells the story of how we refined our implementation of this feature in the Stream Chat Android SDK.

## Going Fully Multiplatform #1: Migrating your Android Project to Kotlin Multiplatform

DevFeed: [Going Fully Multiplatform #1: Migrating your Android Project to Kotlin Multiplatform](<https://devfeed.tech/articles/going-fully-multiplatform-1-migrating-your-android-project-to-kotlin-multiplatform-25912.md>)

Original publisher: [Read original article](<https://medium.com/@xxfast/going-fully-multiplatform-1-migrating-your-android-project-to-kotlin-multiplatform-8fc38763307?source=rss-43bae76e8f81------2>)

Author: Isuru Rajapakse

Published: 2021-10-21T13:24:07Z

Content type: tutorial

Language: en

Sources: [Stories by Isuru Rajapakse on Medium](<https://devfeed.tech/sources/stories-by-isuru-rajapakse-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Ktor](<https://devfeed.tech/topics/ktor.md>), [Web](<https://devfeed.tech/topics/web.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [koin](<https://devfeed.tech/topics/koin.md>), [RxJava](<https://devfeed.tech/topics/rxjava.md>), [navigation](<https://devfeed.tech/topics/navigation.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [caching](<https://devfeed.tech/tags/caching.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [moshi](<https://devfeed.tech/tags/moshi.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>)

### AI overview

The article describes migrating an Android-only application to Kotlin Multiplatform. It compares the existing Android stack with a planned multiplatform stack targeting Android, JVM, iOS, and Web, including changes to networking, serialization, caching, dependency injection, asynchronous plumbing, navigation, and UI.

### Source excerpt

Earlier this year I started a mission to start migrating one of our long-lasting Android-only apps to Kotlin Multiplatform to go beyond just Android. This is the story of how that went. Migration from Only-Android to Kotlin Multiplatform!The Android stack This is our current "stack" our android app was set up as follows Targeting Android SDK API 23 or above, we had a few libraries to help us out. The Android-only stack OkHttp for Networking Retrofit for.. also Networking Moshi for serialisation Okio for caching Koin for Dependency Injection/ Service Locator Plumbing with RxJava Navigation with Conductor Imperative UI with Android Views written in XML The Multiplatform stack To go beyond just Android, I had to make some hard decisions to step outside of the comfort zone that we've been so fond of To target Android, JVM, iOS and Web -- we will be making use of The Multiplatform stack Ktor for Networking Kotlin Serialisation for.. serialisation Caching with SQLDelight Koin for Dependency Injection (that one can stay) Plumbing with Coroutine Flows Navigation with Decompose Declarative UI powered with Jetpack/Jetbrains Compose That's the plan! In the next few articles, we'll take a look at each step in more detail. Before jumping on to that -- I want to take a close look at how we can fully modularise a Kotlin Multiplatform project with Going Fully Multiplatform #2 Modularising your Kotlin Multiplatform Project!

## Band-aiding legacy networking libraries with Retrofit and OkHttp

DevFeed: [Band-aiding legacy networking libraries with Retrofit and OkHttp](<https://devfeed.tech/articles/band-aiding-legacy-networking-libraries-with-retrofit-and-okhttp-29035.md>)

Original publisher: [Read original article](<https://saket.me/retrofit-band-aid/>)

Author: Saket Narayan

Published: 2018-04-30T09:22:05Z

Content type: tutorial

Language: en

Sources: [Saket Narayan](<https://devfeed.tech/sources/saket-narayan.md>)

Topics: [legacy](<https://devfeed.tech/topics/legacy.md>), [networking](<https://devfeed.tech/topics/networking.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Library](<https://devfeed.tech/topics/library.md>), [API](<https://devfeed.tech/topics/api.md>), [MQTT](<https://devfeed.tech/topics/mqtt.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apis](<https://devfeed.tech/tags/apis.md>), [http](<https://devfeed.tech/tags/http.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [networking](<https://devfeed.tech/tags/networking.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>)

### AI overview

This tutorial explains how to use Retrofit with a legacy networking library by adding an OkHttp interceptor that redirects network requests to the existing library. It also describes exposing nonstandard data sources through Retrofit converters.

### Source excerpt

When Uncommon was brought in to refactor a big legacy app last year, we found ourselves in a strange situation. Our client was maintaining a common library for handling networking -- HTTP, FCM, MQTT -- across all apps under their brand. This library (let's call it SadLibrary) had an API that was badly designed and dated, but not using [...] The post Band-aiding legacy networking libraries with Retrofit and OkHttp appeared first on Saket Narayan.

## Opinion, should we prefix JAX-RS Path value with a slash ?

DevFeed: [Opinion, should we prefix JAX-RS Path value with a slash ?](<https://devfeed.tech/articles/opinion-should-we-prefix-jax-rs-path-value-with-a-slash-26091.md>)

Original publisher: [Read original article](<https://blog.arkey.fr/tomb/uri_paths_with_trailing_or_leading_slashes/>)

Author: brice.dutheil@gmail.com (Brice Dutheil)

Published: 2018-02-20T00:00:00Z

Content type: opinion

Language: en

Sources: [The Coffee Workshop](<https://devfeed.tech/sources/the-coffee-workshop.md>)

Topics: [HTTP](<https://devfeed.tech/topics/http.md>), [client](<https://devfeed.tech/topics/client.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Linux](<https://devfeed.tech/topics/linux.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [http](<https://devfeed.tech/tags/http.md>), [linux](<https://devfeed.tech/tags/linux.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [opinion](<https://devfeed.tech/tags/opinion.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>), [server](<https://devfeed.tech/tags/server.md>), [standards](<https://devfeed.tech/tags/standards.md>)

### AI overview

This opinion examines whether JAX-RS path annotations should use a leading slash. It explains that JAX-RS treats paths with and without leading or trailing slashes similarly, while Retrofit and OkHttp resolve a leading slash as an absolute URL path, making slash placement semantically significant on the client side.

### Source excerpt

In the past months I have been using extensively the infamous HTTP client OkHTTP, I have been impressed by the will power of committers to respect HTTP standards. My co-workers which have various degrees of knowledge and experience in different language ecosystem work on a server-side application with some JAX-RS endpoints, and this question arose:

## Tracing High Volume Services

DevFeed: [Tracing High Volume Services](<https://devfeed.tech/articles/tracing-high-volume-services-26520.md>)

Original publisher: [Read original article](<http://engineering.curalate.com/2017/09/26/tracing-services.html>)

Author: Anton Kropp was a Software Engineer

Published: 2017-09-26T12:11:36Z

Content type: article

Language: en

Sources: [Curalate](<https://devfeed.tech/sources/curalate.md>)

Topics: [tracing](<https://devfeed.tech/topics/tracing.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [Logging and metrics](<https://devfeed.tech/topics/logging-and-metrics.md>), [Finagle](<https://devfeed.tech/topics/finagle.md>), [HTTP](<https://devfeed.tech/topics/http.md>)

Tags: [debugging](<https://devfeed.tech/tags/debugging.md>), [devops](<https://devfeed.tech/tags/devops.md>), [finagle](<https://devfeed.tech/tags/finagle.md>), [http](<https://devfeed.tech/tags/http.md>), [logging](<https://devfeed.tech/tags/logging.md>), [logging-and-metrics](<https://devfeed.tech/tags/logging-and-metrics.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [scala](<https://devfeed.tech/tags/scala.md>), [services](<https://devfeed.tech/tags/services.md>), [soa](<https://devfeed.tech/tags/soa.md>), [tracing](<https://devfeed.tech/tags/tracing.md>)

### AI overview

The article explains how to trace requests across a high-volume service ecosystem by propagating a trace identifier through service calls and including it in logs. It describes Curalate's use of Finagle and custom OkHttp interceptors to place the identifier in HTTP headers, then reuse it in logging contexts and structured JSON logs.

### Source excerpt

We like to think that building a service ecosystem is like stacking building blocks. You start with a function in your code. That function is hosted in a class. That class in a service. That service is hosted in a cluster. That cluster in a region. That region in a data center, etc. At each level there's a myriad of challenges. From the start, developers tend to use things like logging and metrics to debug their systems, but a certain class of problems crops up when you need to debug across services. From a debugging perspective, you'd like to have a higher projection of the view of the system: a linearized view of what requests are doing. I.e. You want to be able to see that service A called service B and service C called service D at the granularity of single requests. Cross Service Logging The simplest solution to this is to require that every call from service to service comes with some sort of trace identifier. Incoming requests into the system, either from public API's or client side requests, or even from async daemon invoked timers/schedules/etc generates a trace. This trace then gets propagated through the entire system. If you use this trace in all your log statements you can now correlate cross service calls. How is this accomplished at Curalate? For the most part we use Finagle based services and the Twitter ecosystem has done a good job of providing the concept of a thread local TraceId and automatically propagating it to all other twitter-* components (yet another reason we like Finatra!). All of our service clients automatically pull this thread local trace id out and populate a known HTTP header field that services then pick up and re-assume. For Finagle based clients this is auto-magick'd for you. For other clients that we use, like OkHttp, we had to add custom interceptors that pulled the trace from the thread local and set it on the request. Here is an example of the header being sent automatically as part of Zipkin based headers (which we re-use

## How to use Retrofit on android with Kotlin (KAD 21)

DevFeed: [How to use Retrofit on android with Kotlin (KAD 21)](<https://devfeed.tech/articles/how-to-use-retrofit-on-android-with-kotlin-kad-21-27224.md>)

Original publisher: [Read original article](<https://antonioleiva.com/retrofit-android-kotlin>)

Published: 2017-04-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Antonio Leiva](<https://devfeed.tech/sources/antonio-leiva.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [API](<https://devfeed.tech/topics/api.md>), [Library](<https://devfeed.tech/topics/library.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Gson](<https://devfeed.tech/topics/gson.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [build](<https://devfeed.tech/tags/build.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [gson](<https://devfeed.tech/tags/gson.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>)

### AI overview

A Kotlin tutorial showing how to integrate Retrofit 2 into an Android application for making LastFM API requests. It covers Gradle dependencies, OkHttp logging, Gson conversion, request interfaces, service initialization, and making requests with extension functions.

### Source excerpt

Everything Android, Kotlin and other random topics

## Vulnerability in OkHttp's Certificate Pinner

DevFeed: [Vulnerability in OkHttp's Certificate Pinner](<https://devfeed.tech/articles/vulnerability-in-okhttp-s-certificate-pinner-15950.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/vulnerability-in-okhttps-certificate-pinner>)

Author: Square Engineering

Published: 2016-03-11T17:11:00Z

Content type: article

Language: en

Sources: [Square Corner Blog](<https://devfeed.tech/sources/square-corner-blog-medium.md>), [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [vulnerability](<https://devfeed.tech/topics/vulnerability.md>), [bug](<https://devfeed.tech/topics/bug.md>), [Security](<https://devfeed.tech/topics/security.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>), [Bug Bounty](<https://devfeed.tech/topics/bugbounty.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [bounty](<https://devfeed.tech/tags/bounty.md>), [bug](<https://devfeed.tech/tags/bug.md>), [bug-bounty](<https://devfeed.tech/tags/bug-bounty.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [latest-release](<https://devfeed.tech/tags/latest-release.md>), [okhttp](<https://devfeed.tech/tags/okhttp.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [release](<https://devfeed.tech/tags/release.md>), [security](<https://devfeed.tech/tags/security.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>), [vulnerability](<https://devfeed.tech/tags/vulnerability.md>)

### AI overview

The article reports a vulnerability in OkHttp's CertificatePinner that could defeat certificate pinning. It says the issue was fixed in OkHttp 3.2.0 and backported to OkHttp 2.7.5, and recommends upgrading to the latest release.

### Source excerpt

We fixed a bug that could have been used to defeat certificate pinning