Ok2Curl alternatives and similar packages
Based on the "Utility" category.
Alternatively, view Ok2Curl alternatives based on common mentions on social networks and blogs.
-
StatusBarUtil
A util for setting status bar style on Android App. -
timber
A logger with a small, extensible API which provides utility on top of Android's normal Log class. -
ExpirableDiskLruCache
Java implementation of a Disk-based LRU cache which specifically targets Android compatibility. -
tape
A lightning fast, transactional, file-based FIFO for Android and Java. -
OpenKeychain
OpenKeychain is an OpenPGP implementation for Android. -
joda-time-android
Joda-Time library with Android specialization -
tray
a SharedPreferences replacement for Android with multiprocess support -
AutobahnAndroid
WebSocket & WAMP in Java for Android and Java 8 -
easydeviceinfo
:iphone: [Android Library] Get device information in a super easy way. -
Android-Templates-And-Utilities
Collection of source codes, utilities, templates and snippets for Android development. -
secure-preferences
Android Shared preference wrapper than encrypts the values of Shared Preferences. It's not bullet proof security but rather a quick win for incrementally making your android app more secure. -
greenrobot-common
General purpose utilities and hash functions for Android and Java (aka java-common) -
Androl4b
A Virtual Machine For Assessing Android applications, Reverse Engineering and Malware Analysis -
vector-compat
A support library for VectorDrawable and AnimatedVectorDrawable classes introduced in Lollipop -
CastCompanionLibrary-android
CastCompanionLibrary-android is a library project to enable developers integrate Cast capabilities into their applications faster and easier. -
android_dbinspector
Android library for viewing, editing and sharing in app databases. -
AndroidBillingLibrary
Android Market In-app Billing Library -
motion
An Android library allowing images to exhibit a parallax effect that reacts to the device's tilt -
Colours
A beautiful set of predefined colors and a set of color methods to make your Android development life easier. -
EasyCamera
Wrapper around the android Camera class that simplifies its usage -
MrVector
[Deprecated] AKA VectorDrawableCompat: A 7+ backport of VectorDrawable -
Reservoir
Android library to easily serialize and cache your objects to disk using key/value pairs. -
davdroid
DAVdroid – CalDAV/CardDAV synchronization for Android 4+ devices -
android-validation-komensky
A simple library for validating user input in forms using annotations. -
dspec
A simple way to define and render UI specs on top of your Android UI. -
routable-android
Routable, an in-app native URL router, for Android -
Treasure
Very easy to use wrapper library for Android SharePreferences
Appwrite - The open-source backend cloud platform
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Ok2Curl or a related project?
README
Ok2Curl

Simply way to transform OkHttp requests into curl logs.
Supported OkHttp versions
Currently Ok2Curl requires OkHttp in version 4.x.
Usage
Add library to project dependencies. Library is hosted on Maven Central.
repositories {
mavenCentral()
}
dependencies {
implementation 'com.github.mrmike:ok2curl:0.8.0'
}
To start logging requests with Ok2Curl add interceptor to OkHttp client.
val client = OkHttpClient.Builder()
.addInterceptor(CurlInterceptor(object : Logger {
override fun log(message: String) {
Log.v("Ok2Curl", message)
}
}))
.build()
Result
With Ok2Curl set up correctly every executed request will be transformed into curl log e.g.
adb logcat -s "Ok2Curl"
curl -X GET -H "Cache-Control:max-stale=2147483647, only-if-cached" https://api.github.com/repos/vmg/redcarpet/issues?state=closed
Network interceptors
By default Ok2Curl uses application interceptors from OkHttp which is adequate for most cases. But sometimes you may want to use network interceptor e.g. to log Cookies set via CookieHandler. In such a case add interceptor the same way as below:
val client = OkHttpClient.Builder()
.addNetworkInterceptor(CurlInterceptor(logger))
.build()
To get know more about Interceptor in OkHttp take a look here: https://github.com/square/okhttp/wiki/Interceptors
Configuration
CurlInterceptor
accepts an optional configuration object. With Configuration
you can specify various options like:
- header modifiers - custom logic for modifying header values
- components - list of required command components
- flags - optional curl flags
- limit - bytes limit for body
- delimiter for command components
class Configuration(
val headerModifiers: List<HeaderModifier> = emptyList(),
val components: List<CommandComponent> = CommandComponent.DEFAULT,
val flags: Flags = Flags.EMPTY,
val limit: Long = 1024L * 1024L,
val delimiter: String = " "
)
Header modifiers
Ok2Curl allows you to modify any header before creating curl command. All you have to do is create your own modifier that implements HeaderModifier and add this modifier to CurlInterceptor. See sample for reference.
val modifier = BasicAuthorizationHeaderModifier(Base64Decoder())
val configuration = Configuration(headerModifiers = listOf(modifier))
val curlInterceptor = CurlInterceptor(AndroidLogger(), configuration)
Command Components
With Ok2Curl configuration you can specify a list of components for curl command. For instance, you can skip header, body, and flag components.
val components = listOf(Curl, Method, Url)
val configuration = Configuration(components = components)
val curlInterceptor = CurlInterceptor(AndroidLogger(), configuration)
As a result, CurlInterceptor will receive given simplified command
// Headers, body and flags are skipped
curl -X GET https://api.github.com/repos/vmg/redcarpet/issues?state=closed
Flags
Ok2Curl supports basic Curl options. To use options use the following code:
val flags = Flags.builder()
.insecure()
.connectTimeout(seconds = 120)
.retry(5)
.build()
val configuration = Configuration(flags = flags)
val curlInterceptor = CurlInterceptor(AndroidLogger(), configuration)
Since now every Curl command will start with curl --insecure --connect-timeout 120 --retry 5...
Supported options
- --insecure
- --max-time seconds
- --connect-timeout seconds
- --retry num
- --compressed
- --location
If would like to support any new options please feel free to open PR. A full list of curl options is available here.
License
Copyright 2018 Michał Moczulski
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*Note that all licence references and agreements mentioned in the Ok2Curl README section above
are relevant to that project's source code only.