{"id":13498300,"url":"https://github.com/alirezaashrafi/webi","last_synced_at":"2026-04-04T14:34:20.590Z","repository":{"id":144175324,"uuid":"115435073","full_name":"alirezaashrafi/webi","owner":"alirezaashrafi","description":"Webi is an Android HTTP library. Fast, Reliable, and Easy to use.  better performance using a smart caching system for requests and responses.","archived":false,"fork":false,"pushed_at":"2018-08-15T03:09:09.000Z","size":506,"stargazers_count":27,"open_issues_count":2,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-01T21:47:24.275Z","etag":null,"topics":["android-library","androidhttp","cache","http-library","json","jsonrequest","proxy"],"latest_commit_sha":null,"homepage":"http://alirezaashrafi.ir/webi","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alirezaashrafi.png","metadata":{"files":{"readme":"README.fa.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-12-26T15:49:03.000Z","updated_at":"2022-12-07T07:58:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"56bf3b95-507e-45a4-a585-99d94fc3b029","html_url":"https://github.com/alirezaashrafi/webi","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alirezaashrafi%2Fwebi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alirezaashrafi%2Fwebi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alirezaashrafi%2Fwebi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alirezaashrafi%2Fwebi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alirezaashrafi","download_url":"https://codeload.github.com/alirezaashrafi/webi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222435747,"owners_count":16984184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-library","androidhttp","cache","http-library","json","jsonrequest","proxy"],"created_at":"2024-07-31T21:00:21.633Z","updated_at":"2026-04-04T14:34:20.562Z","avatar_url":"https://github.com/alirezaashrafi.png","language":"Java","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"﻿\n\u003cdiv  dir=\"rtl\"\u003e\n\u003cp\u003e\u003cimg src=\"https://raw.githubusercontent.com/alirezaashrafi/webi/master/pics/webi.jpg\" width=\"100%\"\u003e\u003c/p\u003e\n    \n#### ستاره دادن فراموش نشود:)⭐️\n\n\u003cp\u003e\u003ca href=\"https://jitpack.io/#alirezaashrafi/webi\"\u003e\u003cimg src=\"https://jitpack.io/v/alirezaashrafi/webi.svg\" alt=\"\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n\u003ch4\u003ewebi کتابخانه سریع و پر از ویژگی ها برای اتصال به سرور است و از ویژگی های آن میتوان به راحتی و کش کردن پاسخ ها برای نرم افزار های اندرویدی اشاره کرد که میتوان گفت قابل مقایسه و حتی بهتر از کتابخانه های مشابه است\u003c/h4\u003e\n\n\n\u003cul\u003e\n\u003cli\u003eراحتی در استفاده\u003c/li\u003e\n\n\u003cli\u003eبرنامه نویسی کمتر\u003c/li\u003e\n\n\u003cli\u003eچند نخی و پر سرعت\u003c/li\u003e\n\n\u003cli\u003eدربرداشتن روش های مختلف برای کش\u003c/li\u003e\n\n\u003cli\u003eقابلیت دریافت jsonArray,jsonObject,xml\u003c/li\u003e\n\n\u003cli\u003eراحتی در ارسال و پست مقادیر به سرور\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\n\u003ch2 id=\"\"\u003e\u003ca href=\"https://github.com/alirezaashrafi/webi/blob/master/README.fa.md\"\u003eenglish readme \u003c/a\u003e\u003c/h2\u003e\n\n\u003chr /\u003e\n\n\u003ch2 dir\"rtl\"\u003eچگونه webi را دانلود کنیم\u003c/h2\u003e\n\n\u003ch4  dir=\"rtl\" id=\"gradle\"\u003eGradle\u003c/h4\u003e\n\n\u003ch6 dir=\"rtl\" id=\"buildgradle\"\u003eاین کد را به build.gradle پروژه خود اضافه کنید\u003c/h6\u003e\n\u003c/div\u003e\n\n```java\n    allprojects {\n         repositories {\n             ...\n             maven { url 'https://jitpack.io' }\n         }\n    }\n```\n\n\u003ch6 dir=\"rtl\" id=\"\"\u003eاین کد را به build.gradle ماژول خود اضافه کنید\u003c/h6\u003e\n\n```java\n    compile 'com.github.alirezaashrafi:webi:4.1.0'\n```\n\n\u003ch3  dir=\"rtl\" id=\"maven\"\u003eMaven\u003c/h3\u003e\n\n\u003ch6 dir=\"rtl\" id=\"\"\u003eاین کد را که مربوط به مخزن JitPack است را به فایل build خود اضافه کنید\u003c/h6\u003e\n\n```xml\n  \u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n      \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n  \u003c/repositories\u003e\n```\n\n\u003ch6  dir=\"rtl\" id=\"\"\u003eاین کد را به dependency اضافه کنید\u003c/h6\u003e\n\n```xml\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.alirezaashrafi\u003c/groupId\u003e\n    \u003cartifactId\u003ewebi\u003c/artifactId\u003e\n    \u003cversion\u003e4.1.0\u003c/version\u003e\n  \u003c/dependency\u003e\n```\n\n\u003chr /\u003e\n\n\u003ch2 dir=\"rtl\" id=\"\"\u003eچگونه از webi استفاده کنید\u003c/h2\u003e\n\n```java\n  Webi.with(context)\n      .from(\"http://www.example.com\")\n      .onResponse(new OnResponse() {\n          @Override\n          public void Response(String response, String where) {\n              //response متن خوانده شده از لینک مورد نظر است\n              //where محل دریافت این پاسخ را نمایش نشان میدهد که ایا از سرور دریافت شده یا از حافظه کش\n          }\n      }).connect();\n```\n\n\n\u003chr /\u003e\n\n\u003ch5 dir=\"rtl\" id=\"\"\u003eتلاش مجدد \u003c/h5\u003e\n\n```java\n  .setRetryTimes(int times) //پیش فرض یک دفعه است\n\n  .setOnRetry(new OnRetry() {\n      @Override\n      public void retry(int remainingRetrys) {\n          //زمانی که تلاش مجدد اجرا شود این تابع صدا زده میشود\n      }\n  });\n```\n\n\u003chr /\u003e\n\n\u003ch5  dir=\"rtl\" id=\"\"\u003eارسال و پست داده ها توسط webi\u003c/h5\u003e\n\n\u003cp  dir=\"rtl\"\u003e\u003ccode  dir=\"ltr\"\u003eaddPost(key,value,description)\u003c/code\u003e نکته: description اطلاعات اضافی برای برنامه نویس است و به سرور ارسال نمیشود\u003c/p\u003e\n\n\n```java\n  Webi.with(context)\n      .from(\"http://www.example.com\")\n      .addPost(\"username\",\"webi\")\n      .addPost(\"password\",\"123456\")\n      .connect();\n```\n\n\u003ch5  dir=\"rtl\" id=\"andreceivethispostsinphp\"\u003eو دریافت مقادیر در php\u003c/h5\u003e\n\n```php\n  \u003c?php\n      $username = $_POST['username'];  //value webi\n      $password = $_POST['password'];  //value 123456\n  ?\u003e\n```\n\n\u003ch5  dir=\"rtl\" id=\"postyourcustomlist\"\u003eلیستی از پست های خود بسازید \u003c/h5\u003e\n\n```java\n  List\u003cPosts\u003epostsList = new ArrayList\u003c\u003e();\n  Posts posts = new Posts();\n  posts.setKey(\"...\");\n  posts.setValue(\"...\");\n  postsList.add(posts);\n  ....\n\n  Webi.with(context)\n    .from(\"http://www.example.com\")\n    .addPostList(postsList)\n    .connect();\n```\n\u003chr /\u003e\n\n\u003ch5  dir=\"rtl\" id=\"addgetmethodparams\"\u003eاضافه کردن پارامتر های ارسالی GET\u003c/h5\u003e\n\n```java\n  Webi.with(context)\n      .from(\"http://www.example.com\")\n      .addGet(\"username\",\"webi\")\n      .addGet(\"password\",\"123456\")\n      .connect();\n\n      //res http://www.example.com?username=webi\u0026password=123456\n```\n\n\u003ch6 dir=\"rtl\" id=\"andgetthatvaluesinphp\"\u003eو دریافت مقادیر در PHP\u003c/h6\u003e\n\n```php\n  \u003c?php\n      $username = $_GET['username'];  //value webi\n      $password = $_GET['password'];  //value 123456\n  ?\u003e\n```\n\n\u003chr /\u003e\n\n\u003ch5  dir=\"rtl\" id=\"addheaders\"\u003eافزودن Header ها\u003c/h5\u003e\n\n```java\n  Webi.with(context)\n      .from(\"http://www.example.com\")\n      .addHeader(\"Content-Type\",\"application/json\")\n      .addHeader(\"Authorization\",\"Bearer.....\")\n      .connect();\n```\n\n\u003ch6  dir=\"rtl\" id=\"ifyouwanttosendbearertokeninheaderusethismethod\"\u003eاگر میخواهید bearer token را در header ارسال کنید از این تابع استفاده کنید\u003c/h6\u003e\n\n```java\n  .setBearerToken(\"e.g. GJKRY78579tFYIlkdhiipEE908y0FD80\")\n```\n\n\u003chr /\u003e\n\n\u003ch5  dir=\"rtl\" id=\"jsonarrayjsonobjectandxmlrequestwithwebi\"\u003eدرخواست JsonArray , JsonObject و XML با webi\u003c/h5\u003e\n\n```java\n  Webi.with(this).from(\"http://www.example.com\")\n      .setOnJsonArrayReceive(new OnJsonArrayReceive() {\n          @Override\n          public void jsonArray(JSONArray jsonArray, String where) {\n\n              //توجه کنید jsonArray با کاراکتر های روبه رو شروع و خاتمه میپذیرد '[',']'\n\n          }\n      })\n      .setOnJsonObjectReceive(new OnJsonObjectReceive() {\n          @Override\n          public void jsonObject(JSONObject jsonObject, String where) {\n\n              //توجه کنید اولین کاراکتر JsonObject '{' است و اخرین نیز '}'\n\n          }\n      })\n      .setOnXmlRecevie(new OnXmlReceive() {\n          @Override\n          public void xml(Document xml, String where) {\n\n\n          }\n      }).connect();\n```\n\n\u003chr /\u003e\n\n\u003cdiv dir=\"rtl\"\u003e\n\n\u003ch5 id=\"cachinginwebi\"\u003eکش کردن در webi\u003c/h5\u003e\n\n\u003ch6 id=\"therearethreewaystocache\"\u003eسه روش برای کس در webi وجود دارد\u003c/h6\u003e\n\n\u003cul\u003e\n \u003cli\u003eram cache - بسیار سریع ولی نا ماندگار\u003c/li\u003e\n\n\u003cli\u003exml cache - سریع ولی در این کتابخانه برای آن محدودیت 50 داده قرار داده شده است و در صورتی که بیش از آن مقدار باشد اطاعات پاک شده و از نوع ذخیره میشود\u003c/li\u003e\n\n\u003cli\u003esql cache -نامحدود در ذخیره سازی بیش از 5000 سند اما سرعت کمتر نسبت به بقیه\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003c/div\u003e\n\n```java\n  Webi.with(context)\n      .from(\"http://www.example.com\")\n      .setSqlCache(true) //It is better to have only one active Caching method\n      .setXmlCache(true)\n      .setRamCache(true)\n      .connect();\n```\n\n\u003ch6 id=\"setsqlcachetruekey\"\u003e\u003ccode\u003e.setSqlCache(true,key)\u003c/code\u003e\u003c/h6\u003e\n\n\u003cp\u003e\u003ccode\u003e.setXmlCache(true,key)\u003c/code\u003e\u003c/p\u003e\n\n\u003ch6 dir=\"rtl\" id=\"yourcustomkeyforstorageifyoudonotsetanautomatichashmd5keywillbegenerated\"\u003eکلید اخصاصی شما برای ذخیره آن سند و اگر وارد نکنید به صورت خودکار به صورت هش شده تولید میشود\u003c/h6\u003e\n\n\u003ch5 dir=\"rtl\" id=\"workoffline\"\u003eفعالیت افلاین\u003c/h5\u003e\n\n\u003cp  dir=\"rtl\"\u003eزمانی که فعالیت افلاین فعال باشد اطلاعات فقط از حافظه خوانده میشود و حافظه ها اپدیت نمیشود\u003c/p\u003e\n\n```java\n  .setWordOffline(true)\n```\n\n\u003chr /\u003e\n\n\u003ch5 dir=\"rtl\" id=\"encryptcachecontent\"\u003eرمز نگاری محتوا حافظه ها\u003c/h5\u003e\n\n\u003ch6  dir=\"rtl\" id=\"whenencryptcacheisenabledthedataisencryptbeforeinsertion\"\u003eزمانی که فعال باشد داده ها قبل از ذخیره در حافظه کش رمزنگاری میشود\u003c/h6\u003e\n\n```java\n  .setEncryptCache(true)\n```\n\u003chr /\u003e\n\n\u003ch5  dir=\"rtl\" id=\"setcustomconnecttimeoutreadtimeout\"\u003eتنظیم تایم اوت های اختصاصی خود\u003c/h5\u003e\n\n```java\n  .setConnectTimeOut(10000)\n  .setReadTimeOut(10000)\n  //پیش فرض برای هر دو پنج هزار میلی ثانیه است\n```\n\n\u003chr /\u003e\n\n\u003ch5 dir=\"rtl\"\n id=\"getresponsetime\"\u003eدریافت زمان پاسخ گویی\u003c/h5\u003e\n\n ```java\n   Webi.with(context)\n     .from(\"http://www.example.com\")\n     .getResponseTime(new GetResponseTime() {\n         @Override\n         public void time(long time) {\n             //e.g. 430 ms\n         }\n     }).\n ```\n\n\u003chr /\u003e\n\n\u003ch5 dir=\"rtl\"\n id=\"callbackwhenrequestfailed\"\u003eتابعی برای زمانی که درخواست ناموفق باشد\u003c/h5\u003e\n\n ```java\n   .setOnFailed(new OnFailed() {\n       @Override\n       public void failed(int code) {\n           //code is http response code e.g. 404\n       }\n   }).\n ```\n\u003chr /\u003e\n\n\u003ch5 dir=\"rtl\" id=\"useproxyinwebi\"\u003eاستفاده از proxy در Webi\u003c/h5\u003e\n\n```java\n.setProxy(host,port).\n   or\n.setProxy(host,port,username,password).\n\n```\n\u003chr /\u003e\n\n\u003ch3   dir=\"rtl\" id=\"webiconfiginit\"\u003e()WebiConfig.init\u003c/h3\u003e\n\n\u003ch4  dir=\"rtl\" id=\"usethisclasstochangewebdefaults\"\u003eاز این کلاس برای تغییر پیش فرض های webi استفاده کنید\u003c/h4\u003e\n\n\n```java\n    WebiConfig.init()\n        .setDefaultUrl(\"http://alirezaashrafi.ir\")\n        .setDefaultConnectTimeOut(15000)\n        .setDefaultReadTimeOut(15000);\n\n    Webi.with(this).onResponse(new OnResponse() {\n        @Override\n        public void Response(String res, String where) {\n\n        }\n    });\n\n```\n\n\u003ch5 dir=\"rtl\" id=\"itwillbetterperformanceifcallandsetfirstofallinapplicationclass\"\u003eبهتر است که تنظیمات پیشفرض خود را قبل از همه و در کلاس  application  تنظیم کنید\u003c/h5\u003e\n\n```java\n  public class myApplication extends Application {\n      @Override\n      public void onCreate() {\n          WebiConfig.init()\n                  .setDefaultUrl(\"http://alirezaashrafi.ir\")\n                  .setDefaultConnectTimeOut(15000)\n                  .setDefaultReadTimeOut(15000);\n\n\n          super.onCreate();\n      }\n  }\n```\n\u003ch5 dir=\"rtl\" id=\"manifest\"\u003emanifest\u003c/h5\u003e\n\n```XML\n\u003cmanifest\u003e\n    \u003capplication\n        android:name=\".myApplication\"\n        ...\n        \u003e\n\n    \u003c/application\u003e\n\u003c/manifest\u003e\n```\n\n\u003ch5 dir=\"rtl\" id=\"someofwebiconfigclassmethods\"\u003eبرخی از تابع های کلاس WebiConfig\u003c/h5\u003e\n\n\u003cp\u003e\u003cimg src=\"https://raw.githubusercontent.com/alirezaashrafi/webi/master/pics/config.png\" \u003e\u003c/p\u003e\n\n\u003chr /\u003e\n\n\u003ch2  dir=\"rtl\"\n id=\"licence\"\u003eلایسنس\u003c/h2\u003e\n\n\u003cp\u003eCopyright 2017 Alireza Ashrafi\u003c/p\u003e\n\n\u003cp\u003eLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ehttp://www.apache.org/licenses/LICENSE-2.0\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\u003c/p\u003e\n\n\u003chr /\u003e\n\n\u003cdiv dir=\"rtl\"\u003e\n\n\u003ch2 id=\"author\"\u003eبرنامه نویس\u003c/h2\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alirezaashrafi\"\u003eعلیرضا اشرفی\u003c/a\u003e\u003c/li\u003e\n\n\u003cli\u003e\u003ca href=\"http://alirezaashrafi.ir\"\u003eوبسایت : alirezaashrafi.ir\u003c/a\u003e\u003c/li\u003e\n\n\u003cli\u003e\u003ca href=\"alirezaashrafi.email@gmail.com\"\u003eایمیل : alirezaashrafi.email@gmail.com\u003c/a\u003e\u003c/li\u003e\n\n\u003cli\u003eموبایل \u0026amp; واتس اپ  09013962648\u003c/li\u003e\n\n\u003cli\u003e\u003ca href=\"http://t.me/dr_khaki\"\u003eتلگرام : @dr_khaki\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003c/div\u003e\n\u003chr /\u003e\n\u003ch4 dir=\"rtl\"\u003eاگر این کتابخانه مورد پسند شما بود ستاره دادن و فالود کردن من رو فراموش نکنید⭐️❤️️💙\u003c/h4\u003e\n\n\u003ch4 dir=\"rtl\" id=\"eventuallyseeourotherlibrariesandprojectshttpsgithubcomalirezaashrafi\"\u003e\u003ca href=\"https://github.com/alirezaashrafi/\"\u003eدر نهایت از دیگر کتابخانه ها و پروژه های ما بازدید کنید\u003c/a\u003e\u003c/h4\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falirezaashrafi%2Fwebi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falirezaashrafi%2Fwebi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falirezaashrafi%2Fwebi/lists"}