Android---Retrofit实现网络请求:Kotlin版

这篇具有很好参考价值的文章主要介绍了Android---Retrofit实现网络请求:Kotlin版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

在 Android 开发中,网络请求是一个极为关键的部分。Retrofit 作为一个强大的网络请求库,能够简化开发流程,提供高效的网络请求能力。

Retrofit 是一个建立在 OkHttp 基础之上的网络请求库,能够将我们定义的 Java 接口转化为相应的 HTTP请求,Retrofit 是适用于 Android 和 Java 的类型安全 HTTP 客户端。通过Retrofit,我们可以轻松发起网络请求,还能将服务器返回的数据转换为所需的格式,如 JSON。

简单使用

1. 在 APP 目录下的 build.gradle 里添加依赖

    // retrofit
    // https://github.com/square/retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    // 使用 gson 解析 json
    // https://github.com/google/gson
    implementation 'com.google.code.gson:gson:2.9.0'
    // 适配 retrofit 使用 gson 解析
    // 版本要和 retrofit 一样
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

2. 在 AndroidManifest.xml 里添加网络权限

<uses-permission android:name="android.permission.INTERNET"/>

3. NetworkModule.kt 创建 Retrofit 实例

object NetworkModule {

    /**
     * TODO 创建 Retrofit 实例
     */
    fun createRetrofit(okHttpClient: OkHttpClient) : Retrofit{
        // 返回一个 retrofit 实例
        return Retrofit.Builder()
            .client(okHttpClient) // 让 retrofit 使用 okhttp
            .baseUrl("http://v.juhe.cn/") // api 地址
            .addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))// 使用 gson 解析 json
            .build()
    }

    /**
     * TODO 创建 OkHttpClient 实例
     */
    fun createOkHttpClient() : OkHttpClient{
        // 返回一个 OkHttpClient 实例
        return OkHttpClient.Builder()
            .connectTimeout(30, TimeUnit.SECONDS)// 设置连接超时时间
            .writeTimeout(10, TimeUnit.SECONDS)
            .readTimeout(10, TimeUnit.SECONDS)
            .build()
    }
}

4. NetworkService.kt 创建网络请求的 Service。是一个接口类

interface NetworkService {

    @GET("toutiao/index")
    suspend fun getNewsService(
        @Query(value = "key") key : String
    ) : NewsEntity

    /**
     * TODO 通过 Retrofit 创建一个 NetworkService 实例
     */
    companion object{
        fun createService() : NetworkService {
            return NetworkModule.createRetrofit(NetworkModule.createOkHttpClient())
                .create(NetworkService::class.java) // TODO 返回一个 NetworkService 的实例
        }
    }
}

NewsEntity 是一个实体类,解析返回的数据。Result.kt 是一个具体的数据类,可根据返回的数据进行细化。

class NewsEntity {

    var reason : String? = null //返回说明
    //var result : Result? = null // 返回结果

    var error_code : Int = 0 // 返回码
}

5. MainActivity.kt 进行网络请求

class MainActivity : AppCompatActivity() {
    private lateinit var networkRequest : TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        networkRequest = findViewById(R.id.network_request)
        // TODO 点击发送网络请求
        networkRequest.setOnClickListener{

            // TODO 网络请求为耗时操作,放到协程作用域里进行
            lifecycleScope.launch {
                val networkService = NetworkService.createService()
                val newsEntity = networkService.getNewsService("40279bee66d427555ce361fe49387a8e")
                Log.d("HL", newsEntity.reason.toString())
            }
        }
    }
}

网络请求是异步操作,需要在协程里进行。这里使用 lifecycleScope.launch{ ...} 进行。使用 Lifecycle 添加如下依赖。

implementation ("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1")

请求的数据是聚合数据上的新闻头条API 接口,请求地址为: "http://v.juhe.cn/toutiao/index?key=40279bee66d427555ce361fe49387a8e"。由于是使用的 http 请求头,所以需要在 AndroidManifest.xml 里添加 android:usesCleartextTraffic="true",更改网络安全配置。

Android---Retrofit实现网络请求:Kotlin版,# Android第三方库,android,retrofit,kotlin

最后,通过打印 Log 的方式,查看请求是否成功。

Log.d("HL", newsEntity.reason.toString())

Android---Retrofit实现网络请求:Kotlin版,# Android第三方库,android,retrofit,kotlin

 

对应的 Java 版本实现:Android---Retrofit实现网络请求:Java 版 文章来源地址https://www.toymoban.com/news/detail-829043.html

到了这里,关于Android---Retrofit实现网络请求:Kotlin版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android开发:通过Tesseract第三方库实现OCR

    一、引言         什么是 OCR ?OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。简单地说,OCR是一种技术,该项技术采用光学的

    2024年02月16日
    浏览(68)
  • Android笔记(十八):面向Compose组件结合Retrofit2和Rxjava3实现网络访问

    Square公司推出的Retrofit2库(https://square.github.io/retrofit/),改变了网络访问的方式。它实现了网络请求的封装。Retrofit库采用回调处理方式,使得通过接口提交请求和相应的参数的配置,就可以获得对应的响应,并可以将响应获得的数据解析成特定的数据格式,例如将JSON数据解

    2024年02月02日
    浏览(39)
  • Android平台如何实现第三方模块编码后(H.264/H.265/AAC/PCMA/PCMU)数据实时预览播放

    技术诉求 我们在做GB28181设备对接模块和RTMP直播推送模块的时候,遇到这样的技术需求,设备(如执法记录仪)侧除了采集传统的摄像头外,还需要对接比如大疆等第三方数据源,确保按照GB28181规范和RTMP协议规范,接入到国标平台侧和RTMP服务,除了正常的接入需求外,还需

    2024年02月16日
    浏览(39)
  • 请求第三方Https地址忽略SSL证书校验

    说明:个人使用记录 需要在请求之前忽略ssl协议,这里是直接使用静态方法初始化时就执行了 也需要在请求接口之前忽略SSL

    2024年04月10日
    浏览(50)
  • JAVA调用第三方接口的GET/POST/PUT请求方式

    GET请求 POST请求 POST请求(JSON传参) PUT请求(传TOKEN)

    2024年02月03日
    浏览(63)
  • Android Pdf第三方框架

    导入AndroidPdfViewer 在 repositories 里面添加库 布局文件引用PDFView PdfViewer 为我们提供了以下几种读取文件的方法: Configurator 主要方法 PDFView 其他方法 github地址: https://github.com/barteksc/AndroidPdfViewer 导入mupdf 在 repositories 里面添加库 mupdf提供了解析代码, Document 读取pdf文件, Androi

    2024年02月13日
    浏览(70)
  • Android 解决第三方库版本冲突

    在开发游戏SDK时会使用一些第三方库,例如上文提到的 OkHttp ,或者集成某些第三方,而这些第三方使用的系统库(例如 supportv7)和项目组使用的版本不一致,在编译时就会出现版本冲突问题。解决办法有两个: 尽量不使用第三库,例如针对 OkHttp ,如果没有特殊的需求(比

    2023年04月27日
    浏览(116)
  • 138. 第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析

    本教程第 37 篇文章,我们介绍了如何在 SAP ABAP 系统 SICF 事务码 里,开发一段 ABAP 代码,用来响应通过浏览器或者第三方工具,比如 curl,Postman 发起的 HTTP 请求。 31. 如何让 ABAP 服务器能够响应通过浏览器发起的自定义 HTTP 请求 在实际的 ABAP 集成项目中,这种方式非常使用。

    2024年03月21日
    浏览(58)
  • 【Android 12 AOSP学习】Android内置第三方apk到系统

    这篇文章将介绍如何在Android系统中内置第三方apk 编译好的Android源码 Android apk文件:也就是安卓应用安装包 (1)在源码 packages/apps 目录下以我们需要内置的APK名字来创建一个新的文件夹 以 qqmusic.apk 为例,在 Android_12_AOSP/packages/apps 目录下新建qqmusic文件夹 (2)将 qqmusic.apk 放入

    2024年02月02日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包