Java 我只想通过android发送get请求,但它不起作用。我的代码如下:,
这是我为get请求编写的方法。 GET_URL在我的例子中是一个字符串,它的值GET_URL=192.168.4.1?值=1。 我在单击按钮时调用了这个方法,但它在android中不起作用,而在java中却可以完美地工作。 注意:我的apk编译没有任何错误,它也运行,但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
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();