0

我正在尝试让Finnhub-Kotlin从我的 Android 应用程序中工作。我正在尝试对 /quote API 执行一个简单的获取请求,但使用他们的内置请求时出现“NetworkExecutionOnMainThread”错误。

所以我尝试使用 OkHttp 自己构建请求,我得到了 200 响应,但响应中没有正文。响应为空。

这是我尝试过的:

使用 Finnhub-kotlin 示例代码:

ApiClient.apiKey["token"] = "MY_API_KEY"
val apiClient = DefaultApi()
apiClient.quote("TICKER")

这会导致 NetworkOnMainThread 异常,即使我相信我在异步线程中正确设置了它。我注意到他们的网络调用是在使用调试器单步执行时同步设置的。

然后我尝试自己使用 OkHttp 异步构建请求以避免 NetworkOnMainThread 异常:

val client = OkHttpClient()
val baseUrl = "https://finnhub.io/api/v1/quote?symbol=${ticker}&token=MY_API_KEY"
val request = Request.Builder()
    .url(baseUrl)
    .header("accept-language","en-US")
    .addHeader("Accept", "application/json")
    .addHeader("Content-Type", "application/json")
    .build()

client.newCall(request).enqueue(object : Callback {
    override fun onFailure(request: Request?, e: IOException?) {
        //..
    }

    override fun onResponse(response: Response?) {
        //..
    }
})

上述代码成功返回 200,但响应中没有内容。

如果我尝试在浏览器中点击相同的 url,则没有问题,我会看到 json 响应。我在这里错过了什么吗?

4

0 回答 0