Retrofit 使用指南
Retrofit
是 Android 上最常用的网络请求库之一,它简化了 HTTP 请求的处理,支持 GET、POST、PUT、DELETE 等请求方式,并且可以配合 Gson
、Moshi
等解析 JSON 数据。
1. 添加依赖
在 build.gradle
(Module 级) 中添加:
1 2 3 4
| dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' // Gson 解析 JSON }
|
2. 创建 API 接口
定义 API 接口,例如获取用户信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import retrofit2.Call import retrofit2.http.GET import retrofit2.http.POST import retrofit2.http.PUT import retrofit2.http.DELETE import retrofit2.http.Body import retrofit2.http.Path import retrofit2.http.Header
interface ApiService { @GET("users/{id}") // GET 请求 fun getUser(@Path("id") userId: Int): Call<User>
@POST("users") // POST 请求 fun createUser(@Body user: User): Call<User>
@PUT("users/{id}") // PUT 请求 fun updateUser(@Path("id") userId: Int, @Body user: User): Call<User>
@DELETE("users/{id}") // DELETE 请求 fun deleteUser(@Path("id") userId: Int): Call<Void>
@GET("users/{id}") // 添加自定义 Header fun getUserWithHeader(@Path("id") userId: Int, @Header("Authorization") token: String): Call<User> }
|
3. 定义数据模型
1 2 3 4 5
| data class User( val id: Int, val name: String, val email: String )
|
4. 创建 Retrofit 实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory
object RetrofitClient { private const val BASE_URL = "https://api.example.com/"
val instance: ApiService by lazy { Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build() .create(ApiService::class.java) } }
|
5. 发起网络请求
GET 请求
1 2 3 4 5 6 7 8 9 10 11 12 13
| val call = RetrofitClient.instance.getUser(1) call.enqueue(object : retrofit2.Callback<User> { override fun onResponse(call: Call<User>, response: retrofit2.Response<User>) { if (response.isSuccessful) { val user = response.body() println("用户信息: ${user?.name}, ${user?.email}") } }
override fun onFailure(call: Call<User>, t: Throwable) { println("请求失败: ${t.message}") } })
|
POST 请求
1 2
| val newUser = User(0, "John Doe", "john@example.com") val call = RetrofitClient.instance.createUser(newUser)
|
PUT 请求
1 2
| val updatedUser = User(1, "Updated Name", "updated@example.com") val call = RetrofitClient.instance.updateUser(1, updatedUser)
|
DELETE 请求
1
| val call = RetrofitClient.instance.deleteUser(1)
|
1 2
| val token = "Bearer your_token_here" val call = RetrofitClient.instance.getUserWithHeader(1, token)
|
6. 使用协程 (Coroutine) 优化请求
将 API 接口修改为使用 suspend 函数:
1 2 3 4
| interface ApiService { @GET("users/{id}") suspend fun getUser(@Path("id") userId: Int): User }
|
在 ViewModel 中调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.launch
class UserViewModel : ViewModel() { fun fetchUser() { viewModelScope.launch { try { val user = RetrofitClient.instance.getUser(1) println("用户信息: ${user.name}, ${user.email}") } catch (e: Exception) { println("请求失败: ${e.message}") } } } }
|
7. 总结
- GET、POST、PUT、DELETE 基本请求
- 添加 Header 请求
- 使用 suspend + Coroutine 优化请求
最后我想说想了解更多更全关于Rotrofit的知识去看书P451吧!!!