Java 我只想通过android发送get请求,但它不起作用。我的代码如下:,

Java 我只想通过android发送get请求,但它不起作用。我的代码如下:,,java,android,Java,Android,这是我为get请求编写的方法。 GET_URL在我的例子中是一个字符串,它的值GET_URL=192.168.4.1?值=1。 我在单击按钮时调用了这个方法,但它在android中不起作用,而在java中却可以完美地工作。 注意:我的apk编译没有任何错误,它也运行,但get请求不起作用。 按钮代码如下: public void sendGET(String GET_URL) throws IOException { try { URL obj = new URL(G

这是我为get请求编写的方法。 GET_URL在我的例子中是一个字符串,它的值GET_URL=192.168.4.1?值=1。 我在单击按钮时调用了这个方法,但它在android中不起作用,而在java中却可以完美地工作。 注意:我的apk编译没有任何错误,它也运行,但get请求不起作用。 按钮代码如下:

  public void sendGET(String GET_URL) throws IOException {
    try {
        URL obj = new URL(GET_URL);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("GET");
        con.setRequestProperty("User-Agent", USER_AGENT);
        int responseCode = con.getResponseCode();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
}
事故日志如下: 07-29 16:10:07.3523459-3459/com.example.samiullah.esp8266 E/AndroidRuntime:FATAL EXCEPTION:main 进程:com.example.samiullah.esp8266,PID:3459 android.os.NetworkOnMainThreadException 在android.os.StrictMode$AndroidBlockGuardPolicy.onNetworkStrictMode.java:1273 在libcore.io.BlockGuardOs.connectBlockGuardOs.java:110 位于libcore.io.IoBridge.connectErrnoIoBridge.java:137 在libcore.io.IoBridge.connectIoBridge.java:122 在java.net.PlainSocketImpl.connectPlainSocketImpl.java:183 在java.net.PlainSocketImpl.connectPlainSocketImpl.java:452 位于java.net.Socket.connectSocket.java:884 位于com.android.okhttp.internal.Platform.connectSocketPlatform.java:117 位于com.android.okhttp.internal.http.SocketConnector.connectRawSocketSocketConnector.java:160 位于com.android.okhttp.internal.http.SocketConnector.connectCleartextSocketConnector.java:67 位于com.android.okhttp.Connection.connectConnection.java:152 在com.android.okhttp.Connection.connectAndSetOwnerConnection.java:185 在com.android.okhttp.OkHttpClient$1.connectAndSetOwnerOkHttpClient.java:128 位于com.android.okhttp.internal.http.HttpEngine.nextConnectionHttpEngine.java:341 位于com.android.okhttp.internal.http.HttpEngine.connectHttpEngine.java:330 位于com.android.okhttp.internal.http.HttpEngine.sendRequestHttpEngine.java:248 位于com.android.okhttp.internal.huc.HttpURLConnectionImpl.executehttppurlconnectionimpl.java:433 位于com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseHttpURLConnectionImpl.java:384 位于com.android.okhttp.internal.huc.HttpURLConnectionImpl.getresponsecodetpurlconnectionimpl.java:497 位于com.example.samiullah.esp8266.MainActivity.sendGETMainActivity.java:110 位于com.example.samiullah.esp8266.MainActivity$1.onClickMainActivity.java:29 在android.view.view.performClickView.java:5198 在android.view.view$PerformClick.runView.java:21147 位于android.os.Handler.handleCallbackHandler.java:739 在android.os.Handler.dispatchMessageHandler.java:95 在android.os.Looper.Looper.java:148 在android.app.ActivityThread.mainActivityThread.java:5417 在java.lang.reflect.Method.Invokenactive方法中 位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:726 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:616
07-29 16:10:09.956 3459-3459/com.example.samiullah.esp8266 I/进程:发送信号。PID:3459 SIG:9

我认为这是一个有趣的错误


正在侦听哪个端口的服务器?您应该在请求url中指定服务器端口,如在AndroidMenifest.xml中的添加

    led1on.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try{
                sendGET("http://192.168.4.1/?linker=1");
                Toast.makeText(getApplicationContext(),
                        "Led1 ON Clicked!", Toast.LENGTH_SHORT).show();
            }
            catch (IOException e){

            }
        }
    });

这不是一个好方法,但它可以解决你的问题。查看一下

您必须先连接同一网络,然后尝试获取数据。或者尝试其他API链接。

你的错误是什么?@ashrafaliwahab我没有错误。get请求不起作用。此get请求由arduino接收,arduino随后点亮led。但当我点击按钮时,它不起作用。get请求的相同代码在java中工作。我在java中一点按钮就调用了它,它可以工作,led也可以亮起,但在android中不工作。我想做的就是如何在android中使用get请求。你的清单文件中有android internet权限吗?没有。但我连接到arduino wifi,我正在将此get请求发送到arudino,不涉及internet。Arduino是我的android手机连接的wifi接入点。我应该启用什么权限的互联网或一些wifi?@zhh我认为您发现的问题是get请求无法工作的原因。您可以建议什么解决方案?java中get请求的相同代码在没有端口的情况下也可以工作。在java中对端口进行更改后,它会像前面一样工作。但在安卓系统中没有效果。我想要一些方法,可以像上面在android中一样发出get请求。当我在浏览器中键入192.168.4.1?linker=1时,它会工作。我想用android应用程序来完成这个任务,我为此做了一些工作。在这些按钮的后面,我调用sendGet方法。但不幸的是,它不起作用。你能建议一些方法,可以在点击按钮时调用,它会发送get请求192.168.4.1吗?linker=1?我已经通过授予INTERNET权限构建了另一个apk。apk成功构建。但当我安装并点击任何按钮时,错误提示会说:不幸的是,Myapp已经停止,停止意味着有非常有用的崩溃日志。你能发布你的崩溃日志吗?我正在尝试,但是评论太长了,不允许。谢谢。它现在可以工作了,正如我建议的那样,我已经做了单独的线程。
<uses-permission android:name="android.permission.INTERNET" />
new Thread(() -> sendGET("http://192.168.4.1/?linker=1")).start();