webi کتابخانه سریع و پر از ویژگی ها برای اتصال به سرور است و از ویژگی های آن میتوان به راحتی و کش کردن پاسخ ها برای نرم افزار های اندرویدی اشاره کرد که میتوان گفت قابل مقایسه و حتی بهتر از کتابخانه های مشابه است
- راحتی در استفاده
- برنامه نویسی کمتر
- چند نخی و پر سرعت
- دربرداشتن روش های مختلف برای کش
- قابلیت دریافت jsonArray,jsonObject,xml
- راحتی در ارسال و پست مقادیر به سرور
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
compile 'com.github.alirezaashrafi:webi:4.1.0'
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.alirezaashrafi</groupId>
<artifactId>webi</artifactId>
<version>4.1.0</version>
</dependency>
Webi.with(context)
.from("http://www.example.com")
.onResponse(new OnResponse() {
@Override
public void Response(String response, String where) {
//response متن خوانده شده از لینک مورد نظر است
//where محل دریافت این پاسخ را نمایش نشان میدهد که ایا از سرور دریافت شده یا از حافظه کش
}
}).connect();
.setRetryTimes(int times) //پیش فرض یک دفعه است
.setOnRetry(new OnRetry() {
@Override
public void retry(int remainingRetrys) {
//زمانی که تلاش مجدد اجرا شود این تابع صدا زده میشود
}
});
addPost(key,value,description)
نکته: description اطلاعات اضافی برای برنامه نویس است و به سرور ارسال نمیشود
Webi.with(context)
.from("http://www.example.com")
.addPost("username","webi")
.addPost("password","123456")
.connect();
<?php
$username = $_POST['username']; //value webi
$password = $_POST['password']; //value 123456
?>
List<Posts>postsList = new ArrayList<>();
Posts posts = new Posts();
posts.setKey("...");
posts.setValue("...");
postsList.add(posts);
....
Webi.with(context)
.from("http://www.example.com")
.addPostList(postsList)
.connect();
Webi.with(context)
.from("http://www.example.com")
.addGet("username","webi")
.addGet("password","123456")
.connect();
//res http://www.example.com?username=webi&password=123456
<?php
$username = $_GET['username']; //value webi
$password = $_GET['password']; //value 123456
?>
Webi.with(context)
.from("http://www.example.com")
.addHeader("Content-Type","application/json")
.addHeader("Authorization","Bearer.....")
.connect();
.setBearerToken("e.g. GJKRY78579tFYIlkdhiipEE908y0FD80")
Webi.with(this).from("http://www.example.com")
.setOnJsonArrayReceive(new OnJsonArrayReceive() {
@Override
public void jsonArray(JSONArray jsonArray, String where) {
//توجه کنید jsonArray با کاراکتر های روبه رو شروع و خاتمه میپذیرد '[',']'
}
})
.setOnJsonObjectReceive(new OnJsonObjectReceive() {
@Override
public void jsonObject(JSONObject jsonObject, String where) {
//توجه کنید اولین کاراکتر JsonObject '{' است و اخرین نیز '}'
}
})
.setOnXmlRecevie(new OnXmlReceive() {
@Override
public void xml(Document xml, String where) {
}
}).connect();
- ram cache - بسیار سریع ولی نا ماندگار
- xml cache - سریع ولی در این کتابخانه برای آن محدودیت 50 داده قرار داده شده است و در صورتی که بیش از آن مقدار باشد اطاعات پاک شده و از نوع ذخیره میشود
- sql cache -نامحدود در ذخیره سازی بیش از 5000 سند اما سرعت کمتر نسبت به بقیه
Webi.with(context)
.from("http://www.example.com")
.setSqlCache(true) //It is better to have only one active Caching method
.setXmlCache(true)
.setRamCache(true)
.connect();
.setXmlCache(true,key)
زمانی که فعالیت افلاین فعال باشد اطلاعات فقط از حافظه خوانده میشود و حافظه ها اپدیت نمیشود
.setWordOffline(true)
.setEncryptCache(true)
.setConnectTimeOut(10000)
.setReadTimeOut(10000)
//پیش فرض برای هر دو پنج هزار میلی ثانیه است
Webi.with(context)
.from("http://www.example.com")
.getResponseTime(new GetResponseTime() {
@Override
public void time(long time) {
//e.g. 430 ms
}
}).
.setOnFailed(new OnFailed() {
@Override
public void failed(int code) {
//code is http response code e.g. 404
}
}).
.setProxy(host,port).
or
.setProxy(host,port,username,password).
WebiConfig.init()
.setDefaultUrl("http://alirezaashrafi.ir")
.setDefaultConnectTimeOut(15000)
.setDefaultReadTimeOut(15000);
Webi.with(this).onResponse(new OnResponse() {
@Override
public void Response(String res, String where) {
}
});
public class myApplication extends Application {
@Override
public void onCreate() {
WebiConfig.init()
.setDefaultUrl("http://alirezaashrafi.ir")
.setDefaultConnectTimeOut(15000)
.setDefaultReadTimeOut(15000);
super.onCreate();
}
}
<manifest>
<application
android:name=".myApplication"
...
>
</application>
</manifest>
Copyright 2017 Alireza Ashrafi
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.
- علیرضا اشرفی
- وبسایت : alirezaashrafi.ir
- ایمیل : [email protected]
- موبایل & واتس اپ 09013962648
- تلگرام : @dr_khaki