安卓使用Retrofit發(fā)起http請(qǐng)求

1.首先導(dǎo)個(gè)包

    implementation 'com.squareup.retrofit2:retrofit:2.6.1'
    implementation 'com.squareup.retrofit2:converter-gson:2.6.1'

2. 配置一下權(quán)限

<uses-permission android:name="android.permission.INTERNET" />
android:networkSecurityConfig="@xml/network_config"

-----------------新建res/xml/network_config.xml

<?xml version="1.0" encoding="utf-8"?>
  <network-security-config>

    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>

  </network-security-config>

3. 創(chuàng)建一個(gè)服務(wù)接口


import retrofit2.Call
import retrofit2.http.GET

interface DtkService {

    @GET("api/v1/dtk/apis/categorys")
    fun getCategorys() : Call<String>
}

4. 封裝一下Retrofit,單例類


import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

object ServiceCreator {

    private const val BASE_URL = "http://192.168.199.118:8089/"

    private val retrofit =
        Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create())
            .build()

    fun <T> create(serverClass: Class<T>): T = retrofit.create(serverClass)

    inline fun <reified T> create(): T = create(T::class.java)

}

5.使用

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val btn: Button = findViewById<Button>(R.id.getAppDataBtn)
        btn.setOnClickListener {
            val dtkService = ServiceCreator.create<DtkService>()
            dtkService.getCategorys().enqueue(object : Callback<String> {
                override fun onResponse(call: Call<String>, response: Response<String>) {
                    Log.d("MAIN - CATEGORY", response.body().toString())
                }
                override fun onFailure(call: Call<String>, t: Throwable) {
                    Log.d("Main", "獲取失敗")
                    t.printStackTrace()
                }

            })
        }


    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容