android - 为什么 10.0.2.2 在模拟器浏览器中有效,但在应用程序中无效?
问题描述
我有一个烧瓶宁静的服务器,它给了我一些 JSON。我尝试使用 okhttp 在我的应用程序中获取该 json,但它不起作用。它总是失败。我尝试使用 Wikipedia API 并且它有效。我的服务器在本地主机上运行,我在我的应用程序中使用 10.0.2.2。最奇怪的是 10.0.2.2 在模拟器浏览器中工作,它向我显示 JSON,但在我的应用程序中不起作用。
这是我的主要活动中调用的方法:
fun fetchJson() {
val url = "http://10.0.2.2:5000/users"
val request = Request.Builder().url(url).build()
println(request.url())
val client = OkHttpClient()
client.newCall(request).enqueue(object: Callback {
override fun onFailure(call: Call, e: IOException) {
println("Failed to execute")
}
override fun onResponse(call: Call, response: Response) {
val body = response.body()?.string()
println(body)
}
})
}
它总是打印“执行失败”
注意:我在清单中添加了 INTERNET 权限。
解决方案
@Xvolks 建议打印异常有所帮助。这是因为在 API 级别 28 中,明文支持被禁用。这是帮助我的答案:
推荐阅读
- r - R 是否支持“Between”运算符?
- angular - 带有 @Input() 的组件的 Angular i18n 翻译
- c# - 向图表添加点
- python - 如何避免单击转到位于 python selenium 中同一位置的外部 Web 元素
- arduino - 为什么 Node-red Debug 节点不显示我的 mqtt 消息?
- ansible - Ansible AXW 忽略 extra_vars
- django-rest-framework - 如何在Django Rest中距离客户位置25公里的基础上列出/订购模型中具有经纬度字段的多家医院?
- sql-server - 如何从 Visual Studio 2019 调试 SQL
- excel - 如何在使用 Datetime 时获得不同的小时数
- python - 如何去下一个网页网页抓取