Fuel alternatives and similar libraries
Based on the "Http Clients" category.
Alternatively, view Fuel alternatives based on common mentions on social networks and blogs.
-
httpmocker
HttpMocker is a simple HTTP mocking library written in Kotlin to quickly and easily handle offline modes in your apps
SaaSHub - Software Alternatives and Reviews
Do you think we are missing an alternative of Fuel or a related project?
Popular Comparisons
README
Fuel
The easiest HTTP networking library for Kotlin/Android.
You are looking at the documentation for 2.x.y.. If you are looking for the documentation for 1.x.y, checkout the 1.16.0 README.md
Features
- [x] HTTP
GET/POST/PUT/DELETE/HEAD/PATCHrequests in a fluent style interface - [x] Asynchronous and blocking requests
- [x] Download as a file
- [x] Upload files,
Blobs,DataParts asmultipart/form-data - [x] Cancel asynchronous request
- [x] Debug logging / convert to cUrl call
- [x] Deserialization into POJO / POKO
- [x] Requests as coroutines
- [x] API Routing
Installation
We offer maven and jitpack installations. Maven via bintray only has stable releases but jitpack can be used to build any branch, commit and version.
Maven
You can download and install Fuel with Maven and Gradle. The core package has the following dependencies:
- Kotlin -
- Result - 3.1.0
//core
implementation 'com.github.kittinunf.fuel:fuel:<latest-version>'
//packages
implementation 'com.github.kittinunf.fuel:<package>:<latest-version>'
Make sure to include mavenCentral() in your repositories (jcenter() is deprecated, new releases starting from 2.2.3 are hosted on mavenCentral())
repositories {
mavenCentral()
}
Each of the extensions / integrations has to be installed separately.
| Package | Description |
|---|---|
[fuel](./fuel) |
Core package |
[fuel-android](./fuel-android) |
Android: Automatically invoke handler on Main Thread when using Android Module |
[fuel-coroutines](./fuel-coroutines) |
KotlinX: Execution with coroutines |
[fuel-forge](./fuel-forge) |
Deserialization: Forge |
[fuel-gson](./fuel-gson) |
(De)serialization: Gson |
[fuel-jackson](./fuel-jackson) |
Deserialization: Jackson |
fuel-json |
Deserialization: Json |
fuel-kotlinx-serialization |
(De)serialization: KotlinX Serialization |
[fuel-livedata](./fuel-livedata) |
Android Architectures: Responses as LiveData |
[fuel-moshi](./fuel-moshi) |
Deserialization: Moshi |
[fuel-reactor](./fuel-reactor) |
Reactive Programming: Responses as Mono (Project Reactor 3.x) |
[fuel-rxjava](./fuel-rxjava) |
Reactive Programming: Responses as Single (RxJava 2.x) |
[fuel-stetho](./fuel-stetho) |
Utility: Debug utility for Android on Chrome Developer Tools, Stetho |
Jitpack
If you want a SNAPSHOT distribution, you can use Jitpack
repositories {
maven(url = "https://www.jitpack.io") {
name = "jitpack"
}
}
dependencies {
//core
implementation(group = "com.github.kittinunf.fuel", name = "fuel", version = "-SNAPSHOT")
//packages
// replace <package> with the package name e.g. fuel-coroutines
implementation(group = "com.github.kittinunf.fuel", name = "<package>", version = "-SNAPSHOT")
}
or
dependencies {
//core and/or packages
// replace <package> with the package name e.g. fuel-coroutines
listof("fuel", "<package>").forEach {
implementation(group = "com.github.kittinunf.fuel", name = it, version = "-SNAPSHOT")
}
}
Configuration
groupis made up ofcom.githubas well as username and project namenameis the subproject, this may be any of the packages listed in the installation instructions eg.fuel,fuel-coroutines,fuel-kotlinx-serialization, etcversioncan be the latestmaster-SMAPSHOTor-SNAPSHOTwhich always points at the HEAD or any other branch, tag or commit hash, e.g. as listed on jitpack.io.
We recommend not using SNAPSHOT builds, but a specific commit in a specific branch (like a commit on master), because your build will then be stable.
Build time-out
Have patience when updating the version of fuel or building for the first time as jitpack will build it, and this may cause the request to jitpack to time out. Wait a few minutes and try again (or check the status on jitpack).
NOTE: do not forget to add the kotlinx repository when using coroutines or serialization
Forks
Jitpack.io also allows to build from fuel forks. If a fork's username is $yourname,
- adjust
grouptocom.github.$yourName.fuel - and look for
versiononhttps://jitpack.io/#$yourName/Fuel
Quick start
Fuel requests can be made on the Fuel namespace object, any FuelManager or using one of the String extension methods. If you specify a callback the call is async, if you don't it's blocking.
Async Usage Example
import com.github.kittinunf.fuel.httpGet
import com.github.kittinunf.result.Result
fun main(args: Array<String>) {
val httpAsync = "https://httpbin.org/get"
.httpGet()
.responseString { request, response, result ->
when (result) {
is Result.Failure -> {
val ex = result.getException()
println(ex)
}
is Result.Success -> {
val data = result.get()
println(data)
}
}
}
httpAsync.join()
}
Blocking Usage Example
import com.github.kittinunf.fuel.httpGet
import com.github.kittinunf.result.Result;
fun main(args: Array<String>) {
val (request, response, result) = "https://httpbin.org/get"
.httpGet()
.responseString()
when (result) {
is Result.Failure -> {
val ex = result.getException()
println(ex)
}
is Result.Success -> {
val data = result.get()
println(data)
}
}
}
// You can also use Fuel.get("https://httpbin.org/get").responseString { ... }
// You can also use FuelManager.instance.get("...").responseString { ... }
Fuel and the extension methods use the FuelManager.instance under the hood. You can use this FuelManager to change the default behaviour of all requests:
FuelManager.instance.basePath = "https://httpbin.org"
"/get"
.httpGet()
.responseString { request, response, result -> /*...*/ }
// This is a GET request to "https://httpbin.org/get"
Detailed usage
Check each of the packages documentations or the Wiki for more features, usages and examples. Are you looking for basic usage on how to set headers, authentication, request bodies and more? [fuel: Basic usage](./fuel/README.md) is all you need.
Basic functionality
- [
fuel: Basic usage](./fuel/README.md) - [
fuel-android: Android usage](./fuel-android/README.md) - [
fuel-coroutines: Execution with coroutines](./fuel-coroutines/README.md)
Responses
- [
fuel-livedata: Responses as LiveData](./fuel-livedata/README.md) - [
fuel-reactor: Responses as Mono](./fuel-reactor/README.md) - [
fuel-rxjava: Responses as Single](./fuel-rxjava/README.md)
(De)serialization
- [
fuel-forge: Deserialization with Forge](./fuel-forge/README.md) - [
fuel-gson: (De)serialization with Gson](./fuel-gson/README.md) - [
fuel-jackson: Deserialization with Jackson](./fuel-jackson/README.md) - [
fuel-json: Deserialization with Json](./fuel-json/README.md) fuel-kotlinx-serialization: (De)serialization with KotlinX Serialization- [
fuel-moshi: Deserialization with Moshi](./fuel-moshi/README.md)
Utility
- [
fuel-stetho: Debugging bridge for Android with Stetho](./fuel-stetho/README.md)
Other libraries
If you like Fuel, you might also like other libraries of mine;
- Result - The modelling for success/failure of operations in Kotlin
- Fuse - A simple generic LRU memory/disk cache for Android written in Kotlin
- Forge - Functional style JSON parsing written in Kotlin
- ReactiveAndroid - Reactive events and properties with RxJava for Android SDK
Credits
Fuel is brought to you by contributors.
Licenses
Fuel is released under the MIT license.
*Note that all licence references and agreements mentioned in the Fuel README section above
are relevant to that project's source code only.