Retrofit 从服务器哪里拉取数据?

Where does Retrofit pull data from server?

我正在学习 Kotlin 的协程,我是 Retrofit 的初学者。

代码 A 来自 artical

似乎Retrofit从本地服务器http://localhost/获取数据,我没有运行本地网络服务器。

Retrofit 从哪里获取数据?

代码A

private val service: MainNetwork by lazy {
    val okHttpClient = OkHttpClient.Builder()
            .addInterceptor(SkipNetworkInterceptor())
            .build()

    val retrofit = Retrofit.Builder()
            .baseUrl("http://localhost/")
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .build()

    retrofit.create(MainNetwork::class.java)
}

fun getNetworkService() = service

/**
 * Main network interface which will fetch a new welcome title for us
 */
interface MainNetwork {
    @GET("next_title.json")
    suspend fun fetchNextTitle(): String
}

自己!

如果您查看代码:.addInterceptor(SkipNetworkInterceptor())。拦截器处理通过 Retrofit 进行的每个调用。

有些人用它来记录有关调试调用的数据。有些人用它来自动提供授权令牌。

在这种情况下,它提供的是虚假数据。

您可以在此处阅读相关内容:

https://github.com/googlecodelabs/kotlin-coroutines/blob/master/coroutines-codelab/finished_code/src/main/java/com/example/android/kotlincoroutines/util/SkipNetworkInterceptor.kt

你应该写这个 IP,它相当于 base url 中的 localhost。

val retrofit = Retrofit.Builder()
        .baseUrl("http://10.0.2.2:3000/")
        .client(okHttpClient)
        .addConverterFactory(GsonConverterFactory.create())
        .build()

但是你应该检查你在本地主机上的端口号。检查后,您应该将您的端口号添加到说 3000 的部分。替换为 3000。