tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            چگونه لاگ کردن در OkHttp را فعال کنیم؟

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • چگونه لاگ کردن در OkHttp را فعال کنیم؟
            آموزش عملگر ها یا اپراتور های Take و TakeLast در RxJava
            آموزش عملگر ها یا اپراتور های Take و TakeLast در RxJava
            7 بهمن 1398
            آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6
            آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6
            28 بهمن 1398
            منتشر شده توسط مهندس داودی
            چگونه لاگ کردن در OkHttp را فعال کنیم؟

            چگونه لاگ کردن در OkHttp را فعال کنیم؟

            OkHttp چیست و چگونه لاگ کردن در OkHttp را فعال کنیم؟ احتمالا برای هر توسعه دهنده اندروید این مشکل پیش آمده که درخواستی که به سرور ارسال می کنند دچار مشکل شده و خطایی دارد.و طبیعتا اقدام بعد این است که api رو داخل کلاینت دیگری مثلا مرورگر اجرا کنید تا خطا را واضح تر متوجه شوید.

            چگونه لاگ کردن در OkHttp را فعال کنیم؟

            اما چه می شود اگر درون خود پروژه اندروید بتوانیم لاگ درخواست به سرورمون رو به طور واضح ببینیم و متوجه مشکل خود بشویم و نیاز به کلاینت دیگر جهت اشکال زدایی نداشته باشیم! این کار با OkHttp logging interceptor ممکن است.

            OkHttp چیست ؟

            درواقع OkHttp یک رهگیر (interceptor) است که به شما جهت لاگ کردن درخواست API کمک میکند.پس اینجا رهگیر (interceptor) بیشتر شبیه به یک مدیر برای فراخوانی API است که به شما برای لاگ کردن درخواست و یا اعمال اکشن خاصی برروی درخواست کمک میکند.

            برای شروع کار با OkHttp طبیعتا اول باید کتابخانه آن را درون پروژه ایمپورت کرد، پس در gradle برنامه وابستگی کتابخانه را اضافه میکنیم:

            implementation "com.squareup.okhttp3:logging-interceptor:4.0.1"
            

            و سپس برای لاگ کردن درخواست باید ابتدا یک درخواست ایجاد کنیم (با Retrofit درخواست را پیاده میکنیم )

            همچنین بخوانید: آموزش Retrofit همراه با مثال

            val client = OkHttpClient.Builder()
             var request = Request.Builder()
                     .url()
                     .build()
            

            ما یک آبجکت برای درخواست ایجاد کردیم همچنین یک نمونه از کلاس OkHttpClient بصورت ساده بدون هیچ پیکربندی یا config خاصی.

            در ادامه باید درخواست را فراخوانی کنیم بصورت زیر:

             client.newCall(request).enqueue(object :Callback{
                 override fun onFailure(request: Request?, e: IOException?) {
                     //API Call fails
                 }
            override fun onResponse(response: Response?) {
                //Do something with response
            }
            })
            

            حالا درخواست فراخوانی می شود اما ما هیچ لاگی از این درخواست ( request ) دریافت نخواهیم کرد چرا که نمونه ای که از OkHttp ساختیم هیچ رهگیر یا interceptor خاصی ندارد و تنها یک نمونه ساده ست.

            پس برای لاگ کردن درخواست ها باید به شی OkHttpClient که ساختیم یک رهگیر (interceptor) اضافه کنیم.و همانطور که گفته شد رهیگیر ها برای مانیتور کردن یا پیگیرری کردن فراخوان های API بصورت لاگ هایی در logcat بکار میرود.
            ساختن رهگیر (interceptor) بدین صورت است:

             val logging = HttpLoggingInterceptor()
             logging.level = (HttpLoggingInterceptor.Level.BASIC)
            

            در تکه کد فوق ما یک نمونه از کلاس HttpLoggingInterceptor ساختیم وسطح یا لول Basic برای لاگ هایی که قرار است نمایش دهد ست کردیم.سطح لاگ basic سطح اولیه لاگ های Okhttp ست که تنها درخواست و پاسخ را لاگ می کند.ما همچنین سطح های NONE ، HEADERS و BODY را هم داریم که هرکدام مقادیر زیر را لاگ میکنند:

            • NONE : هیچ چیز را لاگ نمی کند.
            • HEADERS : درخواست و پاسخ به علاوه مقدار header را لاگ می کند.
            • BODY : درخواست و پاسخ همراه با header و همچنین مقدار بدنه درخواست یا body اگر وجود دارد.

            و همچنین برای اضافه کردن این logger به درخواست ها کافی ست شی ساخته شده HttpLoggingInterceptor را به شی ساخته شده OkHttpClient بصورت زیر بسط دهید:

            val client = OkHttpClient.Builder()
             client.addInterceptor(logging)
            

            و حالا درصورتی که برنامه مجدد اجرا کنیم ، لاگ های زیر را در Logcat خواهیم دید:

            (POST /greeting http/1.1 (3-byte body –>
            OK (22ms, 6-byte body) <– 200

            نکات مهم در مورد فعال کردن لاگ کردن در OkHttp

            نکته 1:
            برای اضافه کردن یک TAG دلخواه به لاگ هایی که قرار است تنظیم شود شما کافیست بصورت زیر شی HttpLoggingInterceptor را تغییر دهید.

             val logging = HttpLoggingInterceptor(object : Logger() {
                 fun log(message: String) {
                     Log.d("YOUR TAG", message)
                 }
             })
            

            و حالا پس از اجرای برنامه شما شاهد لاگ های خود با تگ مشخص شده هستید.

            نکته ۲:
            شما همچنین می توانید برای ایجاد رهگیر (interceptor) های شخصی سازی شده توسط خودتان کلاس Interceptro را ارث بری کنید و بدنه جدیدی را مطابق دستور زیر بسازید.

             class CustomInterceptor : Interceptor {
                 override fun intercept(chain: Interceptor.Chain): Response {
                     var request = chain.request()
                     request = request.newBuilder()
                             .build()
                     return chain.proceed(request)
                 }
             }
            

            و در ادامه آن را به شی client بصورت زیر ارجاع دهید

             val client = OkHttpClient.Builder()
             client.addInterceptor(CustomInterceptor())
            

            نکته ۳:
            برای مخفی کردن برخی اطلاعات خاص در logcat اندروید کافی ست بصورت زیر عمل کنید.

             logging.redactHeader("Authorization")
             logging.redactHeader("Cookie")
            

            امیدوارم این آموزش به برخی سوالات شما ازجمله اینکه OkHttp چیست ؟ چگونه لاگ کردن در OkHttp فعال کنیم؟ و … جواب داده باشد.

            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            1 Comment

            1. f.n گفت:
              27 خرداد 1399 در 17:51

              سلام خیلی ممنون از آموزشتون
              خیلی بهم کمک کرد

              پاسخ

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

            ساخت اپلیکیشن های موبایل

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

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج