首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我只想通过android发送get请求,但是它不起作用,我的代码如下所示,

我只想通过android发送get请求,但是它不起作用,我的代码如下所示,
EN

Stack Overflow用户
提问于 2018-07-29 09:32:29
回答 3查看 307关注 0票数 1
代码语言:javascript
运行
复制
  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();
    }
}

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

代码语言:javascript
运行
复制
    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){

            }
        }
    });

崩溃日志在这里: 07-29 16:10:07.352 3459-3459/com.example.samiullah.esp 8266 E/AndroidRuntime:致命异常:主要进程: com.example.samiullah.esp8266,PID: 3459 android.os.NetworkOnMainThreadException at android.os.NetworkOnMainThreadException在libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110) at libcore.io.IoBridge.connectErrno(IoBridge.java:137)在libcore.io.IoBridge.connect(IoBridge.java:122) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452) at java.net.Socket.connect(Socket.java:884).android.okhttp.internal.Platform.connectSocket(Platform.java:117) at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)在com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67) at com.android.okhttp.Connection.connect(Connection.java:152)在com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185) at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128) at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)在com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)在com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:497)在com.example.samiullah.esp8266.MainActivity.sendGET(MainActivity.java:110) at com.example.samiullah.esp8266.MainActivity$1.onClick(MainActivity.java:29)在android.view.View.performClick(View.java:5198) at android.view.View$PerformClick.run(View.java:21147)在android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148)在android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(原生方法)在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 07-29 :10:09.956 3459-3459/com.example.samiullah.esp 8266 I/Process:发送信号。PID: 3459 SIG: 9

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-29 10:48:22

在您的AndroidMenifest.xml中,添加

代码语言:javascript
运行
复制
<uses-permission android:name="android.permission.INTERNET" />

我看到了你的日志,对于那些不熟悉android的人来说,这是一个常见的问题。试一试

代码语言:javascript
运行
复制
new Thread(() -> sendGET("http://192.168.4.1/?linker=1")).start();

这不是一个好办法,但它可以解决你的问题。看一下How do I fix android.os.NetworkOnMainThreadException?

票数 0
EN

Stack Overflow用户

发布于 2018-07-29 10:17:59

我觉得这是个有趣的错误..。

服务器在哪个端口上监听?您应该在请求url中指定服务器端口,如http://192.168.4.1:8080/?linker=1

票数 -1
EN

Stack Overflow用户

发布于 2018-07-29 11:26:32

您必须先连接同一个网络,然后尝试获取数据。或者尝试其他API链接。例如:https://jsonplaceholder.typicode.com/photos/1

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51578979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档