栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android – 在 OkHttp 中启用日志记录

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android – 在 OkHttp 中启用日志记录

在您的 Android 应用程序中执行 API 请求时,您是否遇到过负面体验?或者您可能遇到了导致 API 调用无效的错误。

你做了什么尝试?

第一种选择是通过一些客户端尝试 API 请求以找出问题所在。或者也许你会尝试一些不同的东西。如果我们告诉您,您可以选择不同的东西,不会迫使您通过客户端测试 API,那会怎样?

极客提示:您可以在 Android 代码中使用拦截器来获取问题发生时的日志。这不是更好的解决方案吗?

OkHttp 到底是什么?

OkHttp 是一个拦截器,允许您报告 API 请求。因此,在这种情况下,拦截器的功能更像是 API 请求的管理器,允许您监视或执行 API 调用上的某些操作。让我们首先将它包含在我们的项目中;在build.gradle文件中,我们将包括以下内容:

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

然后,为了开始跟踪您的 API 调用,我们必须首先执行 API 请求。

  • 科特林

    val geeksforgeeks = OkHttpClient.Builder() var demands = Request.Builder()         .url()         .build()

    现在,在本节中,我们为请求构建一个对象并定义 OkHttpClient 的变量 client。 

    因此,为了发出 API 请求,我们将需要以下代码:

  • 科特林

    geeksforgeeks.newCall(request).enqueue(object :Callback{     override fun onFailure(request: Request?, e: IOException?) {         // The API Call Failed           // Do something like changing           // the UI to prompt user     }     override fun onResponse(response: Response?) {         // Response returned from the API           // So something from it.     } })

    我们刚刚进行了第一次 API 调用。但是,我们不会看到任何日志,因为我们没有安装任何拦截器来记录调用。那么,我们如何记录呼叫的响应呢?

    要开始记录,我们必须在前面描述的 OkHttpClient 中包含拦截器。

    而且,如前所述,拦截器用于监控 API 请求,并将发布在控制台的 Logcat 中创建的日志。要包含一个拦截器:

  • 科特林

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

    而且,为了在我们使用的客户端中包含这个拦截器:

  • 科特林

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

    现在,当我们再次访问 API 时,我们将在Logcat 中获得如下所示的日志:

    --> POST /hello world/http/1.1(6 字节正文)
    
    <-- 600 OK (10ms, 4-byte body)

    一些注意事项

    注意#1:要为您的或日志添加自定义标签,只需输入以下内容,

  • 科特林

    val aLogger = HttpLoggingInterceptor(object : Logger() {     fun aLogger(textString: String) {         Log.d("GEEKS FOR GEEKS", textString)     } })

    注意#2:你也可以扩展 Interceptor 类来构建你自己的 Interceptor。

  • 科特林

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

    然后使用以下命令将其添加到客户端列表中:

  • 科特林

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

    结论

    在上面的示例中,redactHeader 隐藏了 Authorization 和 cookie 密钥的敏感信息。这些仅在 HEADERS 和 BODY 级别创建。这就是我们可以跟踪在您的 Android 应用程序中执行的 API 调用的方式。

  • 转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/711614.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号