خوش آمدید

مهمان گرامی به انجمن کویک لرن خوش آمدی ، برای استفاده از تمامی امکانات در انجمن عضو شوید.


امیرحسین آقاجری

مدیر تالار
  • تعداد ارسال ها

    13
  • تاریخ عضویت

  • آخرین بازدید

1 دنبال کننده

درباره امیرحسین آقاجری

  • درجه
    کاربر تازه وارد

آخرین بازدید کنندگان نمایه

60 بازدید کننده نمایه
  1. مشکل از ssl سایتتون هست . لینک رو به جای شروع با https با http شروع کنید. همچنین timeout هم زیاد کنید یا اون رو 0 قرار بدید.
  2. 💡لاگ گرفتن تمامی اطلاعات ریکوئست ها و رسپانس با Amir_Retrofit : ✅ فقط کافیست از HttpLoggingInterceptor در بیلدر استفاده کنید. 1️⃣ لاگ گرفتن در بخش Logs بیسیک : Builder.HttpLoggingInterceptor(Level,"Interceptor") 2️⃣ دریافت متن لاگ در یک ایونت : Builder.HttpLoggingInterceptor2(Level,"Interceptor","EventName") Sub EventName_onLog (LogMessage As String) Log(LogMessage) End Sub ⚠️ به جای Level چی قرار بدیم ؟ همانطور که مشخص است پارامتر ورودی Level یک متغییر از نوع اینت میباشد که برای Body عدد 1 برای Basic عدد 2 و برای Headers عدد 3 را باید قرار دهید. Body (1) : لاگ گرفتن تمامی اطلاعات ریکوئست ، رسپانس ، هدر و Body Basic (2) : لاگ گرفتن اطلاعات ریکوئست و رسپانس Headers (3) : لاگ گرفتن اطلاعات ریکوئست ، رسپانس و هدر ها
  3. سلام مجدد. بررسی کردم مشکل رو افراد دیگ هم مثل این که داشتن با okhttp و رتروفیت . شما امیر رتروفیت نسخه 2.49 و 2.50 هردو رو چک کنید. followSslRedirects(true)این کد هم به بیلدر اضافه کنید مثل این که برای سامسونگ با آپدیت G950FXXU1AQK7/G950FOXM1AQ7/G950FXXU1AQK7 مشکلشون رفع شده ...
  4. برای اون مشکل ssl ? بدون vpn هم برای من درسته . اگ لینکتون فرق داره لطفا لینک خودتون رو بدید تست کنم . موفق باشید .
  5. 💡بررسی دقیق وصل بودن یا نبودن اینترنت کاربر با Amir_Retrofit . این روش حتی اگر دستگاه به اینترنت وصل باشد اما به هردلیلی قطع باشد به شما False بر میگرداند. 1️⃣ ابتدا باید StrictMode را غییر فعال کنید که با استفاده از متد زیر میتوانید این کار را نجام دهید. Sub DisableStrictMode Dim jo As JavaObject jo.InitializeStatic("android.os.Build.VERSION") If jo.GetField("SDK_INT") > 9 Then Dim policy As JavaObject policy = policy.InitializeNewInstance("android.os.StrictMode.ThreadPolicy.Builder", Null) policy = policy.RunMethodJO("permitAll", Null).RunMethodJO("build", Null) Dim sm As JavaObject sm.InitializeStatic("android.os.StrictMode").RunMethod("setThreadPolicy", Array(policy)) End If End Sub 2️⃣بررسی وصل بودن یا نبودن از طریق متد زیر : Sub CheckNetwork As Boolean Dim Utils As Amir_RetrofitUtils If Utils.IsNetworkAvailable Then Try Return Utils.CheckNetwork Catch Return False End Try Else Return False End If End Sub 3️⃣ استفاده از آن : DisableStrictMode Log(CheckNetwork)
  6. برای غییر فعال کردن TimeOut کافیست اونو ۰ بدید
  7. برا من که مشکلی نداره ؟
  8. سلام. Builder.SkipHostnameVerifier.skipSSLSocketFactory(True) این کد رو به بیلدر اضافه کنید و اگر نشد پروژتون رو بفرستید بررسی کنم .
  9. 💡چگونه ResponseBody را در Amir_Retrofit تبدیل کنیم به یک فایل ، متن ، بیتمپ و ... کنیم ؟ ✅ کافیست از متد ConvertResponseBody در Amir_RetrofitUtils استفاده کنیم . ✳️ نحوه استفاده : ابتدا ایونت onNext را برای ریکوئست فعال میکنیم . Sub EventName_onNext (ResponseBody As Amir_ResponseBody) End Sub سپس ResponseBody دریافتی را تبدیل میکنیم : String : Retrofit.Utils.ConvertResponseBody(ResponseBody).As.String Boolean : Retrofit.Utils.ConvertResponseBody(ResponseBody).As.Boolean Bitmap : Retrofit.Utils.ConvertResponseBody(ResponseBody).As.Bitmap Etc ... ⚠️برای تبدیل به فایل دو متد قرار دارد که یکی برای فایل هایی با حجم بالا و دیگری برای فایل هایی با حجم کم میباشد. در هنگام استفاده از فایل های حجیم به شما یک ایونت برای روند تبدیل شدن و درصد آن میدهد! ⚠️نیازمند نسخه 2.50
  10. 💡چگونه یک ریکوئست به همراه Body در Amir_Retrofit ارسال کنیم ؟ ✅ کافیست از متد Start در رتروفیت استفاده کنید : 1️⃣ ابتدا یک متغییر از نوع Object تعریف میکنیم : Dim Body As Object 2️⃣ یک RequestBody به آن میدهیم : ( در این مثال یک فایل داده شده ) Body = Retrofit.RB.Create.As.File(Dir,Name) 3️⃣ ریکوئست را با متد Start اجرا میکنیم : Retrofit.Start("put","EventName","Url",Body) ⚠️ در این کد ریکوئست از نوع PUT میباشد که میتوانید پارامتر اول را تغییر دهید. ⚠️ اگر ریکوئست شما Body ندارد میتوانید آن را Null قرار دهید. ⚠️توجه کنید که اگر از متد Body در رتروفیت استفاده کنید ، نوع ریکوئست POST خواهد بود! ⚠️نیازمند نسخه 2.50
  11. 💡همان طور که میدونید در نسخه آخر Amir_Retrofit یعنی 2.50 میتونید با Amir_RetrofitManager تمام ریکوئست ها و یا فقط ریکوئست هایی رو که میخواهید متوقف کنید. 1️⃣ فعال سازی RetrofitManager 🔸روش اول : فعال سازی در بیلدر : Builder.WithManager فقط کافیست این کد رو اضافه کنید به بیلدر 🔹روش دوم : فعال سازی ران تایم از طریق کلاس Amir_RetrofitUtils : If Retrofit.Utils.IsRetrofitManagerEnabled(Retrofit) =False Then Retrofit.Utils.EnableRetrofitManager(Retrofit,True) End If 2️⃣ فعال سازی RetrofitManager : Dim Manager As Amir_RetrofitManager Manager.Initialize(Retrofit) 3️⃣ متوقف کردن ریکوئست ها : 🔸متوقف کردن همه ریکوئست ها : Manager.CancelAll 🔹متوقف کردن یک ریکوئست : Manager.CancelByFullUrl("RequestUrl") 🔴 شما میتونید سایر متد های این کلاس رو بررسی و از آن ها استفاده کنید.
  12. رفع مشکلات و سوالات متداول Amir_Retrofit ورژن لیب : ۲.۵۰ | خرید کتابخانه ــــــــــــــــــــــــــــــــــــــــ خب سوال اولی که برای همه ممکنه پیش بیاد این است که BaseUrl چیست و چه باید کرد ؟ برای مثال اگر ما BaseUrl رو آدرس سایت زیر قرار دهیم : و هنگام ارسال ریکوئست تنها لینک زیر را قرار دهیم : نتیجه درخواست ، لینک زیر خواهد بود : شما همچنان برای لینک ریکوئست میتوانید آدرس یک لینک کامل را بدهید نتیجه میشه خود لینکی که دادید ــــــــــــــــــــــــــــــــــــــــ چگونه کش و کوکی را در رتروفیت غییر فعال کنیم ؟ Dim Builder As Amir_RetrofitBuilder Builder.Initialize.BaseUrl("BaseUrl") Builder.addCache(False) Builder.addCookie(False) Dim Retrofit As Amir_Retrofit Retrofit.Initialize(Builder) در کد بالا متد addCache که پارامتر ورودی برای فعال یا غییر فعال کردن کش میباشد و متد addCookie مثل کش برای غییر فعال کردن کوکی میباشد. ــــــــــــــــــــــــــــــــــــــــ چگونه TimeOut را تنظیم کنیم ؟ Dim TimeOut As Int = 2000 Builder.connectTimeout(TimeOut) Builder.writeTimeout(TimeOut) Builder.readTimeout(TimeOut) در کد بالا کافیست برای تنظیم TimeOut عدد متغییر را تنظیم کنید! ــــــــــــــــــــــــــــــــــــــــ چگونه هدر اضافه کنیم ؟ Dim Header As Map Header.Initialize Header.Put("HeaderName","Value") Header.Put("HeaderName","Value") Builder.addHeader(Header) متد addHeader برای اضافه کردن هدر میباشد که پارامتر دریافتی آن از نوع Map هست و میتونید هدر های خودتون رو به مپ اضافه کنید و به رتروفیت بدید. ــــــــــــــــــــــــــــــــــــــــ با خطای SSL یا ارور Network Error (Code : 100) مواجه شدید ؟ این خطا یکی از دلایل اصلی که دارد به دلیل وصل شدن به یک سایت که گواهی معتبری ندارد میباشد و باید بررسی ssl را غییر فعال کنیم. شما میتوانی این کار را با سه روش مختلف حل کنید : 1 - غییر فعال کردن بررسی ssl Builder.skipSSLSocketFactory(True) 2 - تنظیم ssl پیشفرض توسط رتروفیت Builder.addSSLSocketFactory2 3 - استفاده از حالت unsafe که باعث میشود تمام ssl ها را قبول کند و به سایت های خطرناک وصل شود Builder.UnsafeMode(True) ــــــــــــــــــــــــــــــــــــــــ چگونه یک ریکوئست را کنسل کنیم ؟ بعد از اجرا هر ریکوئست به شما یک Amir_RequestManager را بر میگرداند که از طریق آن میتوانید ریکوئست را کنسل کنید.. برای کنسل کردن ریکوئست از متد Unsubscribe استفاده میشود. نمونه کد : Dim Request As Amir_RetrofitRequest Request = Retrofit.Download(... Request.Unsubscribe ــــــــــــــــــــــــــــــــــــــــ چگونه از Sender به عنوان تگ استفاده کنیم ؟ شما باید قبل از اجرای ریکوئست از Sender استفاده کنید تا آن را در رویداد خود دریافت کنید. نمونه کد : Retrofit.Sender="Download1" Retrofit.Download("Amir","Link1") Retrofit.Sender="Download2" Retrofit.Download("Amir","Link2") Sub Amir_onSucess (key as String,path as String,Name as String,FileSize as long) Log(Sender) ' Get Tag ' End Sub ــــــــــــــــــــــــــــــــــــــــ ارسال داده به فایر بیس : Public Sub SendFCMMessage(EventName As String,Topic As String,API_KEY As String, Data As Map) As Object Dim Retrofit As Amir_Retrofit Dim Builder as amir_Retrofitbuilder Builder.initialize.baseurl("https://fcm.googleapis.com") Builder.addHeader(CreateMap("Authorization","key=" & API_KEY)) Retrofit.Initialize(Builder) Dim m As Map = CreateMap("to": $"/topics/${Topic}"$) m.Put("data", Data) Return Retrofit.json(EventName,"/fcm/send", Retrofit.toJson(m)) End Sub ــــــــــــــــــــــــــــــــــــــــ آپلود عکس و فایل با استفاده از vb.net کد سمت وب : <WebMethod()> Public Function UploadFiles() As String Try Dim length As Integer = Convert.ToInt32(Context.Request.InputStream.Length) If length = 0 Then Return "file size = 0" End If Dim filename As String = HttpContext.Current.Request.Headers("filename") If filename = "" Then Return "header needed not set" End If Dim postFile As HttpPostedFile = Context.Request.Files(Server.HtmlEncode(Context.Request.Files.AllKeys(0))) Dim inStream As System.IO.Stream = postFile.InputStream Dim fileData(postFile.ContentLength - 1) As Byte inStream.Read(fileData, 0, postFile.ContentLength) postFile.SaveAs(Server.MapPath("~\files\") & postFile.FileName) Return "http://www.yourdomain/files/" & postFile.FileName Catch ex As Exception return ex.Message End Try End Function کد B4A : Public Sub Upload (EventName As String,BaseUrl As String,Dir As String,FileName As String) As Object Dim Retrofit As Amir_Retrofit Dim Builder As Amir_RetrofitBuilder Builder.Initialize.baseUrl(BaseUrl) Builder.addCache(False) Builder.addHeader(CreateMap("filename" : FileName)) Retrofit.Initialize(Builder) Return _ Retrofit.UploadFileWithPartMap(EventName,"UploadFiles", CreateMap() , _ Retrofit.RB.WithPartFormData2("PartName",FileName, _ Retrofit.RB.WithProgressRequestBodyObservable(EventName,"image/*",Dir,FileName,2048))) End Sub ــــــــــــــــــــــــــــــــــــــــ این پست به مرور آپدیت خواهد شد... سوالات خود را در کامنت ارسال کنید ..
  13. Sub showNonRepeated(ints() as int) as int Dim Javab as int Dim Tekrari As Int=-1 Dim L As List L.initialize For i = 0 To ints.Lentgh-1 Dim M As int = ints(i) For i2 = 0 To L.Size-1 Dim B as int =L.Get(i2) If M=B Then Tekrari=M Else L.Add(M) Next If L.Size=0 And Tekrari=-1 then L.Add(M) Next For i3 = 0 to L.Size-1 If L.Get(i3)<>Tekrari then Javab=L.Get(i3) Next Return Javab End Sub سلام. این کد فقط برای زمانی که شما دو نوع عدد توی ارسالی ها داشته باشید درسته مثل مثال خودتون یا 3 3 3 4 3 اینجوری اگرم منظورتون چیز دیگه ای هست بگید . امیر حسین آقاجری