OkHttp MockWebServer 调度未触发

问题描述 投票:0回答:1

这是我的隔离代码

fun getMockServerUrl(): String {
    val server = MockWebServer()
    server.dispatcher = object : Dispatcher() {
        override fun dispatch(request: RecordedRequest): MockResponse {
            println("dispatch hit 🚀")
            TODO()
        }
    }
    server.start()
    val url = server.url(path = "")

    val api = Retrofit.Builder()
        .baseUrl(url)
        ...
        .create(MyApi::class.java)

    Thread {
        api.getData().enqueue(
            object : Callback<String> {
                override fun onResponse(call: Call<String>, response: Response<String>) {
                    println("Response is ${response.body()}")
                }
            },
        )
    }.start()
    

    return url.toString().also {
        println("URL is $it")
    }
}

发生什么事了?

  • URL is $it
    使用正确的
    localhost
    基本 URL 进行调用,并且能够从外部浏览器访问
    localhost
    。这意味着服务器已启动并正在运行
  • Response is null
    正在打印,这有点令人期待
  • 但是调度命中永远不会被打印。 (虽然从外部浏览器访问时会打印它):那
android okhttp mockwebserver
1个回答
0
投票

设备已打开代理 (Charles)。关闭它解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.