国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android---Retrofit實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求:Kotlin版

這篇具有很好參考價(jià)值的文章主要介紹了Android---Retrofit實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求:Kotlin版。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

簡(jiǎn)介

在 Android 開(kāi)發(fā)中,網(wǎng)絡(luò)請(qǐng)求是一個(gè)極為關(guān)鍵的部分。Retrofit 作為一個(gè)強(qiáng)大的網(wǎng)絡(luò)請(qǐng)求庫(kù),能夠簡(jiǎn)化開(kāi)發(fā)流程,提供高效的網(wǎng)絡(luò)請(qǐng)求能力。

Retrofit 是一個(gè)建立在 OkHttp 基礎(chǔ)之上的網(wǎng)絡(luò)請(qǐng)求庫(kù),能夠?qū)⑽覀兌x的 Java 接口轉(zhuǎn)化為相應(yīng)的 HTTP請(qǐng)求,Retrofit 是適用于 Android 和 Java 的類型安全 HTTP 客戶端。通過(guò)Retrofit,我們可以輕松發(fā)起網(wǎng)絡(luò)請(qǐng)求,還能將服務(wù)器返回的數(shù)據(jù)轉(zhuǎn)換為所需的格式,如 JSON。

簡(jiǎn)單使用

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 里添加網(wǎng)絡(luò)權(quán)限

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

3. NetworkModule.kt 創(chuàng)建 Retrofit 實(shí)例

object NetworkModule {

    /**
     * TODO 創(chuàng)建 Retrofit 實(shí)例
     */
    fun createRetrofit(okHttpClient: OkHttpClient) : Retrofit{
        // 返回一個(gè) retrofit 實(shí)例
        return Retrofit.Builder()
            .client(okHttpClient) // 讓 retrofit 使用 okhttp
            .baseUrl("http://v.juhe.cn/") // api 地址
            .addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))// 使用 gson 解析 json
            .build()
    }

    /**
     * TODO 創(chuàng)建 OkHttpClient 實(shí)例
     */
    fun createOkHttpClient() : OkHttpClient{
        // 返回一個(gè) OkHttpClient 實(shí)例
        return OkHttpClient.Builder()
            .connectTimeout(30, TimeUnit.SECONDS)// 設(shè)置連接超時(shí)時(shí)間
            .writeTimeout(10, TimeUnit.SECONDS)
            .readTimeout(10, TimeUnit.SECONDS)
            .build()
    }
}

4. NetworkService.kt?創(chuàng)建網(wǎng)絡(luò)請(qǐng)求的 Service。是一個(gè)接口類

interface NetworkService {

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

    /**
     * TODO 通過(guò) Retrofit 創(chuàng)建一個(gè) NetworkService 實(shí)例
     */
    companion object{
        fun createService() : NetworkService {
            return NetworkModule.createRetrofit(NetworkModule.createOkHttpClient())
                .create(NetworkService::class.java) // TODO 返回一個(gè) NetworkService 的實(shí)例
        }
    }
}

NewsEntity 是一個(gè)實(shí)體類,解析返回的數(shù)據(jù)。Result.kt 是一個(gè)具體的數(shù)據(jù)類,可根據(jù)返回的數(shù)據(jù)進(jìn)行細(xì)化。

class NewsEntity {

    var reason : String? = null //返回說(shuō)明
    //var result : Result? = null // 返回結(jié)果

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

5. MainActivity.kt 進(jìn)行網(wǎng)絡(luò)請(qǐng)求

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 點(diǎn)擊發(fā)送網(wǎng)絡(luò)請(qǐng)求
        networkRequest.setOnClickListener{

            // TODO 網(wǎng)絡(luò)請(qǐng)求為耗時(shí)操作,放到協(xié)程作用域里進(jìn)行
            lifecycleScope.launch {
                val networkService = NetworkService.createService()
                val newsEntity = networkService.getNewsService("40279bee66d427555ce361fe49387a8e")
                Log.d("HL", newsEntity.reason.toString())
            }
        }
    }
}

網(wǎng)絡(luò)請(qǐng)求是異步操作,需要在協(xié)程里進(jìn)行。這里使用 lifecycleScope.launch{ ...} 進(jìn)行。使用 Lifecycle 添加如下依賴。

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

請(qǐng)求的數(shù)據(jù)是聚合數(shù)據(jù)上的新聞?lì)^條API 接口,請(qǐng)求地址為:?"http://v.juhe.cn/toutiao/index?key=40279bee66d427555ce361fe49387a8e"。由于是使用的 http 請(qǐng)求頭,所以需要在 AndroidManifest.xml 里添加 android:usesCleartextTraffic="true",更改網(wǎng)絡(luò)安全配置。

Android---Retrofit實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求:Kotlin版,# Android第三方庫(kù),android,retrofit,kotlin

最后,通過(guò)打印 Log 的方式,查看請(qǐng)求是否成功。

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

Android---Retrofit實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求:Kotlin版,# Android第三方庫(kù),android,retrofit,kotlin

?

對(duì)應(yīng)的 Java 版本實(shí)現(xiàn):Android---Retrofit實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求:Java 版?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-829043.html

到了這里,關(guān)于Android---Retrofit實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求:Kotlin版的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android開(kāi)發(fā):通過(guò)Tesseract第三方庫(kù)實(shí)現(xiàn)OCR

    Android開(kāi)發(fā):通過(guò)Tesseract第三方庫(kù)實(shí)現(xiàn)OCR

    一、引言 ????????什么是 OCR ?OCR(Optical Character Recognition,光學(xué)字符識(shí)別)是指電子設(shè)備(例如掃描儀或數(shù)碼相機(jī))檢查紙上打印的字符,通過(guò)檢測(cè)暗、亮的模式確定其形狀,然后用字符識(shí)別方法將形狀翻譯成計(jì)算機(jī)文字的過(guò)程。簡(jiǎn)單地說(shuō),OCR是一種技術(shù),該項(xiàng)技術(shù)采用光學(xué)的

    2024年02月16日
    瀏覽(159)
  • Android筆記(十八):面向Compose組件結(jié)合Retrofit2和Rxjava3實(shí)現(xiàn)網(wǎng)絡(luò)訪問(wèn)

    Android筆記(十八):面向Compose組件結(jié)合Retrofit2和Rxjava3實(shí)現(xiàn)網(wǎng)絡(luò)訪問(wèn)

    Square公司推出的Retrofit2庫(kù)(https://square.github.io/retrofit/),改變了網(wǎng)絡(luò)訪問(wèn)的方式。它實(shí)現(xiàn)了網(wǎng)絡(luò)請(qǐng)求的封裝。Retrofit庫(kù)采用回調(diào)處理方式,使得通過(guò)接口提交請(qǐng)求和相應(yīng)的參數(shù)的配置,就可以獲得對(duì)應(yīng)的響應(yīng),并可以將響應(yīng)獲得的數(shù)據(jù)解析成特定的數(shù)據(jù)格式,例如將JSON數(shù)據(jù)解

    2024年02月02日
    瀏覽(18)
  • Android平臺(tái)如何實(shí)現(xiàn)第三方模塊編碼后(H.264/H.265/AAC/PCMA/PCMU)數(shù)據(jù)實(shí)時(shí)預(yù)覽播放

    Android平臺(tái)如何實(shí)現(xiàn)第三方模塊編碼后(H.264/H.265/AAC/PCMA/PCMU)數(shù)據(jù)實(shí)時(shí)預(yù)覽播放

    技術(shù)訴求 我們?cè)谧鯣B28181設(shè)備對(duì)接模塊和RTMP直播推送模塊的時(shí)候,遇到這樣的技術(shù)需求,設(shè)備(如執(zhí)法記錄儀)側(cè)除了采集傳統(tǒng)的攝像頭外,還需要對(duì)接比如大疆等第三方數(shù)據(jù)源,確保按照GB28181規(guī)范和RTMP協(xié)議規(guī)范,接入到國(guó)標(biāo)平臺(tái)側(cè)和RTMP服務(wù),除了正常的接入需求外,還需

    2024年02月16日
    瀏覽(21)
  • 請(qǐng)求第三方Https地址忽略SSL證書(shū)校驗(yàn)

    說(shuō)明:個(gè)人使用記錄 需要在請(qǐng)求之前忽略ssl協(xié)議,這里是直接使用靜態(tài)方法初始化時(shí)就執(zhí)行了 也需要在請(qǐng)求接口之前忽略SSL

    2024年04月10日
    瀏覽(27)
  • JAVA調(diào)用第三方接口的GET/POST/PUT請(qǐng)求方式

    GET請(qǐng)求 POST請(qǐng)求 POST請(qǐng)求(JSON傳參) PUT請(qǐng)求(傳TOKEN)

    2024年02月03日
    瀏覽(26)
  • Android Pdf第三方框架

    導(dǎo)入AndroidPdfViewer 在 repositories 里面添加庫(kù) 布局文件引用PDFView PdfViewer 為我們提供了以下幾種讀取文件的方法: Configurator 主要方法 PDFView 其他方法 github地址: https://github.com/barteksc/AndroidPdfViewer 導(dǎo)入mupdf 在 repositories 里面添加庫(kù) mupdf提供了解析代碼, Document 讀取pdf文件, Androi

    2024年02月13日
    瀏覽(98)
  • Android 解決第三方庫(kù)版本沖突

    在開(kāi)發(fā)游戲SDK時(shí)會(huì)使用一些第三方庫(kù),例如上文提到的 OkHttp ,或者集成某些第三方,而這些第三方使用的系統(tǒng)庫(kù)(例如 supportv7)和項(xiàng)目組使用的版本不一致,在編譯時(shí)就會(huì)出現(xiàn)版本沖突問(wèn)題。解決辦法有兩個(gè): 盡量不使用第三庫(kù),例如針對(duì) OkHttp ,如果沒(méi)有特殊的需求(比

    2023年04月27日
    瀏覽(88)
  • 138. 第三方系統(tǒng)或者工具通過(guò) HTTP 請(qǐng)求發(fā)送給 ABAP 系統(tǒng)的數(shù)據(jù),應(yīng)該如何解析

    138. 第三方系統(tǒng)或者工具通過(guò) HTTP 請(qǐng)求發(fā)送給 ABAP 系統(tǒng)的數(shù)據(jù),應(yīng)該如何解析

    本教程第 37 篇文章,我們介紹了如何在 SAP ABAP 系統(tǒng) SICF 事務(wù)碼 里,開(kāi)發(fā)一段 ABAP 代碼,用來(lái)響應(yīng)通過(guò)瀏覽器或者第三方工具,比如 curl,Postman 發(fā)起的 HTTP 請(qǐng)求。 31. 如何讓 ABAP 服務(wù)器能夠響應(yīng)通過(guò)瀏覽器發(fā)起的自定義 HTTP 請(qǐng)求 在實(shí)際的 ABAP 集成項(xiàng)目中,這種方式非常使用。

    2024年03月21日
    瀏覽(102)
  • 【Android 12 AOSP學(xué)習(xí)】Android內(nèi)置第三方apk到系統(tǒng)

    這篇文章將介紹如何在Android系統(tǒng)中內(nèi)置第三方apk 編譯好的Android源碼 Android apk文件:也就是安卓應(yīng)用安裝包 (1)在源碼 packages/apps 目錄下以我們需要內(nèi)置的APK名字來(lái)創(chuàng)建一個(gè)新的文件夾 以 qqmusic.apk 為例,在 Android_12_AOSP/packages/apps 目錄下新建qqmusic文件夾 (2)將 qqmusic.apk 放入

    2024年02月02日
    瀏覽(91)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包