(SConnect) A Http client based library that use OkHttp3 for simply making requests to URLs and APIs, and get a response as Json or plain text.
Step 1. Add the JitPack repository to your build file.
Add it in your root build.gradle at the end of repositories:
allprojects { repositories { ... maven { url 'https://jitpack.io' } ... } }Step 2. Add the dependency:
dependencies { ... implementation 'com.github.smith8h:SConnect:v5.0' ... }Warning
Add these dependencies in case you facing some compile or runtime errors:
dependencies { ... implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.11' implementation 'com.squareup.okio:okio:3.5.0' implementation 'com.google.code.gson:gson:2.10.1' ... }To create a connection first pass a context using with() method:
SConnect.with(context)Then pass the callback interface to deal with the response using callback() method:
SConnect.with(context).callback(new SConnectCallBack() { @Override public void onFailure(SResponse response, String tag) {} @Override public void onSuccess(SResponse response, String tag, Map<String, Object> responseHeaders) { // use response, tag, responseHeaders if (response.isJSON() && response.isMap()) { Toast.makeText(context, response.getMap().getString("key"), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, response.toString(), Toast.LENGTH_SHORT).show(); } } })After that, if you need to add headers, params to your connection. add them using methods:
.addHeaders(Map<String, Object>) .addHeader("key", value) // you can also use add header one by one. .addParams(Map<String, Object>) .addParam("key", value) // you can also use add header one by one. // and then set the param type. .paramsType(SConnect.PARAM) // or BODY // if required for some connections .mediaType("a string represent the media type applied to a connection")then pass the url using url() method:
.url("url")Optional method | use tag() to set a tag to every connection (useful when you do a multiple connections at same time and need to recognize them).
.tag("someTag")finaly, use any of get(), post(), put(), delete(), patch(), options() or head() methods corresponding to your connection:
.get() // or: post() | put() | delete() | patch() | options() | head()• connections doesn't need params/headers:
SConnect.with(this) .callback(callback) .url(url) .get(); // post | put | delete // also pass tag if you need to recognize multiple requesrs which one is giving response• connections need params/headers:
Map<String, Object> params = new HashMap<>(); params.put("key", value); ... Map<String, Object> headers = new HashMap<>(); params.put("key", value); ... SConnect.with(this) .callback(callback) .addParams(params) .paramsType(SConnect.PARAM) // or BODY .addHeaders(headers) .mediaType("json/application;Charset:UTF-8") .url("http://example.url.com") .tag("sample") .get(); // post | put | delete...Dealing with *Json response using SResponse class
if response is plain/text or HTML (when requesting websites) simply use
response.toString()method.
// get/check response as json (if get a api json response) boolean isJSON = response.isJSON(); // check if response json is Map Object boolean isMap = response.isMap(); // else if it's Array boolean isArray = response.isArray(); // getting response if it is plain text or json in general String text = response.toString(); // get response as map object SResponse.Map object = response.getMap(); // now you can access all values in that object using // return Object of any value Object o = object.get("key"); // return int int i = object.getInt("key"); // return String String s = object.getString("key"); // return float float f = object.getFloat("key"); // return boolean boolean b = object.getBoolean("key"); // return Map object as above ↑ // if map object nested inside another map object SResponse.Map = object.getMap("key"); // get keys Set<String> keys = object.keys(); // get values List<Object> values = object.values(); // has key? boolean hasKey = object.hasKey("key"); // has value? (accepts anything) boolean hasValue = object.hasValue(Object); // iterate through keys & values object.forEach((key, value) -> { // use key || value }); // size int size = object.size(); // is empty? boolean isEmpty = object.isEmpty(); // to json string String json = object.toString(); // to HashMap HashMap<String, Object> map = object.toMap(); // the same but for arrays // get response as array from response or from map object // this if the response body is array SResponse.Array array = response.getArray(); // and this if response body is object ↑ has an array as value inside it SResponse.Array array = object.getArray("key"); // array class has same methods like map class // get at index as object of any value Object o = array.get(0); // get string String s = array.getString(0); // get int int i = array.getInt(0); // get float float f = array.getFloat(0); // get boolean boolean b = array.getBoolean(0); // get Map object like above if map object nested inside list SResponse.Map m = array.getMap(0); // same if it has array inside array SResponse.Array a = array.getArray(0); // contains something? boolean contains = array.contains(Object); // iterate through items array.forEach(item -> { // use item }); // size int size = array.size(); // is empty boolean isEmpty = array.isEmpty(); // to json string String json = array.toString(); // to List List<Object> list = array.toList(); If you would like to support this project's further development, the creator of this projects or the continuous maintenance of the project feel free to donate. Your donation is highly appreciated. Thank you!
You can choose what you want to donate, all donations are awesome!
