通过局域网发送请求?

时间:2021-02-10 05:14:16

标签: android kotlin

我正在尝试使用我的命令(例如 192.168.0.2/toggle)执行一个 ip,它会将命令发送到我拥有的设备。但是,我无法使用命令本身执行 ip。我的代码如下。

var i = 1
        LockButton.setOnClickListener {
            if (i == 1) {
                Toast.makeText(this@MainActivity, "Locked!", Toast.LENGTH_LONG).show()
                val connection: URLConnection = URL("Https://" + ipcomm2).openConnection()
                connection.connect()
                i = 0
            }
            else if (i == 0) {
                Toast.makeText(this@MainActivity, "MUnlocked!", Toast.LENGTH_LONG).show()
                val connection2: URLConnection = URL("Https://" + ipcomm2).openConnection()
                connection2.connect()
                i = 1
            }
        }

但是,由于我对 Kotlin 编码相对较新,我不太了解执行 URL,因此出现错误

2021-02-10 13:06:19.881 12640-12640/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 12640
    android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1605)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:389)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:621)
        at com.android.okhttp.internal.Platform.connectSocket(Platform.java:182)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:145)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30)
        at com.example.myapplication.MainActivity$onCreate$1.onClick(MainActivity.kt:31)
        at android.view.View.performClick(View.java:7448)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28305)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

第31行就是这一行

val connection: URLConnection = URL("Https://" + ipcomm2).openConnection()

非常感谢任何帮助。谢谢

0 个答案:

没有答案