如何在存储库中初始化 okHttp 的 MockServer()?
Posted
技术标签:
【中文标题】如何在存储库中初始化 okHttp 的 MockServer()?【英文标题】:How to initialize okHttp's MockServer() in a repository? 【发布时间】:2019-03-22 06:56:15 【问题描述】:Server.kt(是一个将返回用户列表的模拟服务器) https://github.com/shalbert94/androidinterview/blob/master/server/src/main/java/com/jobrapp/server/Server.kt
由于某种原因,在我的存储库 (https://github.com/shalbert94/androidinterview/blob/master/app/src/main/java/com/jobrapp/androidinterview/MockServerRepository.kt) 中调用的 val server = Server()
抛出:
Unable to start activity ComponentInfocom.jobrapp.androidinterview/com.jobrapp.androidinterview.MainActivity: android.os.NetworkOnMainThreadException
问题似乎源于调用MockWebServer()
的start()
方法,该方法在Server
的init
块中调用。如何在我的存储库中初始化 Server
而不会触发 NetworkOnMainThreadException?
【问题讨论】:
【参考方案1】:感谢 Kotlin 协程!
fun getUsers(liveData: MutableLiveData<List<User>>) = launch
val server = async Server()
server.await().getUsers().enqueue(object: Callback<List<User>> ...)
【讨论】:
以上是关于如何在存储库中初始化 okHttp 的 MockServer()?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 OkHttp 在 Android 上实现 cookie 处理?