如何将 localhost 与改造结合使用来测试 android 应用程序 kotlin [重复]
Posted
技术标签:
【中文标题】如何将 localhost 与改造结合使用来测试 android 应用程序 kotlin [重复]【英文标题】:how to use localhost in conjunction with retrofit for testing of android apps kotlin [duplicate] 【发布时间】:2021-04-17 18:32:57 【问题描述】:我正在使用 xammp 来测试我的后端脚本,我只需要 get
一些带有改造的 JSON。我尝试过在线学习教程,但无济于事。我得到错误代码
java.net.ConnectException: Failed to connect to /127.0.0.1:80
无论我是使用 localhost 作为 baseURL 还是 localhost/xammp 服务器的 IP 地址,或者我是否明确使用端口,我都会收到此错误消息或类似上述内容。 编辑:仔细检查错误日志后,它还说:
Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
和
Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 80) from /127.0.0.1 (port 58156) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused)
这有什么关系吗?
我的完整 jsontest.php
"resoponse":
"check": "ahhhhhhhh"
,
"Mlist": [
"text1": "text1a",
"text2": "text2a",
"text3": "text3a"
,
"text1": "text1b",
"text2": "text2b",
"text3": "text3b"
,
"text1": "text1c",
"text2": "text2c",
"text3": "text3c"
]
简单的api.kt
interface SimpleApi
@GET("jsontest.php")
suspend fun phonehome(): Phone
主要片段.kt
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View?
val view = inflater.inflate(R.layout.fragment_main, container, false)
mUserViewModel = ViewModelProvider(this).get(ViewModel::class.java)
//other code
TestGet()
return view
val BASE_URL = "http://127.0.0.1/"
private fun TestGet()
val api = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(SimpleApi::class.java)
GlobalScope.launch(Dispatchers.IO)
// doing stuff with response
如果你能指出我正确的方向,我将非常感激
谢谢。
【问题讨论】:
【参考方案1】:您的服务器是否与您的 Android 应用在同一台设备上运行?只有这样你才能使用 localhost/127.0.0.1。
【讨论】:
是的,模拟器作为我的 xammp 服务器在设备上运行 是吗?请重新阅读我的评论。我问服务器在哪里运行。不是模拟器。然后 localhost/127.0.01 为您的应用程序是模拟器。但是您的服务器不在模拟器上运行。因此没有这种方式的联系。 真的吗?好的,如何让我的 xammp 堆栈与我的 android 模拟器一起工作? 为此使用 ip 10.0.2.2。 该死的成功了!谢谢你,兄弟。您介意将解决方案作为答案,以便我给它打上绿色复选标记吗?【参考方案2】:您的服务器在端口 80 上吗?默认情况下,它在 8000 或 8080 上,如果是这种情况,您的 URL (BASE_URL) 将如下所示:http://127.0.0.1:xxxx/,xxxx 是您的端口号,还要检查您的 IP 地址并确保您可以从机器外部访问该 URL .
【讨论】:
所以在仔细检查错误日志后,它还说:` 原因:java.net.ConnectException:无法从 /127.0.0.1(端口)连接到 localhost/127.0.0.1(端口 80) 58160)10000 毫秒后:isConnected 失败:ECONNREFUSED(连接被拒绝)` 任何是的,我可以在我的网络浏览器中使用 127.0.0.1:80 连接到 localhost。 Android 设备的网络浏览器? 它可以在我的电脑网络浏览器中运行,但不能在安卓模拟器的网络浏览器中运行 确实如此。由于 localhost/127.0.0.1 那时不可用。现在你知道为什么了。以上是关于如何将 localhost 与改造结合使用来测试 android 应用程序 kotlin [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 ngrok 与 Google Oauth 结合使用?