【问题标题】:Kotlin Android Emulator java.lang.IllegalArgumentException: Illegal URL: https//10.0.2.2:3000Kotlin Android 模拟器 java.lang.IllegalArgumentException:非法 URL:https//10.0.2.2:3000
【发布时间】:2022-01-04 02:56:24
【问题描述】:

我一直在尝试让 Android 模拟器使用本地成本的 MySQL 数据库启动一个简单的登录/注册程序。但是,当我尝试运行代码时,会出现以下错误,我不确定原因。

块引用 2021-11-25 15:29:40.840 13032-13032/com.example.accentus_login E/AndroidRuntime: 致命异常: main 进程:com.example.accentus_login,PID:13032 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.accentus_login/com.example.accentus_login.MainActivity}:java.lang.IllegalArgumentException:非法 URL:https//10.0.2.2:3000 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:223) 在 android.app.ActivityThread.main(ActivityThread.java:7656) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 引起:java.lang.IllegalArgumentException:非法 URL:https//10.0.2.2:3000 在 retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:454) 在 com.example.accentus_login.Retrofit.RetrofitClient.getInstance(RetrofitClient.kt:13) 在 com.example.accentus_login.MainActivity.onCreate(MainActivity.kt:28) 在 android.app.Activity.performCreate(Activity.java:8000) 在 android.app.Activity.performCreate(Activity.java:7984) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:223) 在 android.app.ActivityThread.main(ActivityThread.java:7656) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

这是设置基本 URL 的代码行:

object RetrofitClient {
    private var ourInstance:Retrofit?=null
    val instance:Retrofit
        get() {
            if(ourInstance==null)
                ourInstance=Retrofit.Builder()
                    .baseUrl("https//10.0.2.2:3000") // 10.0.2.2:3000 is the localhost on emulator
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .build()
            return ourInstance!!
        }
}

这是启动连接到 url 的 API 的地方

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //Init API
        val retrofit = RetrofitClient.instance // < Initialization of connection
        myAPI = retrofit.create(INodeJS::class.java)


        login_button.setOnClickListener{
            login(edt_email.text.toString(),edt_password.text.toString())
        }

        register_button.setOnClickListener{
            register(edt_email.text.toString(),edt_password.text.toString())
        }
    }

我不完全确定为什么它认为本地主机是非法 URL。

【问题讨论】:

    标签: android-studio kotlin android-emulator connection


    【解决方案1】:

    我认为您在协议https 之后缺少冒号。

    交换

    https//10.0.2.2:3000
    

    https://10.0.2.2:3000
    

    应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 1970-01-01
      • 2016-05-28
      • 2021-10-21
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多