如何将 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 结合使用?

前端工程化-基于Taro的Web端Monorepo架构改造

Tekton 与 Argo CD 结合实现 GitOps

如何结合gulp使用postcss

如何在改造中使用原始 json 对象调用改造 @DELETE 方法?

如何将 XAMPP 与复制的站点文件一起使用