当前位置: 首页 > 知识库问答 >
问题:

从NPM JSON获取数据-服务器抛出NetworkOnMainThreadException

徐峰
2023-03-14

Im编写了一个小的Android应用程序,它应该从npm JSON服务器获取数据。它会抛出一个异常。我确实使用AsyncTask扩展了connection类,并在“DoInBackground”中执行了代码,但它仍然抛出了一个异常。请帮帮我.

代码如下:

import android.os.AsyncTask;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Network extends AsyncTask <String, Void, String> {
    public String urlString = ("http://localhost:3000");

    @Override
    protected String doInBackground(String... params) {
        StringBuffer chaine = new StringBuffer("");
        try {
            URL url = new URL(urlString);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-Agnet", "");
            connection.setRequestMethod("POST");
            connection.setDoInput(true);
            connection.connect();

            InputStream inputStream = connection.getInputStream();

            BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream));
            String line = "";
            while ((line = rd.readLine()) != null) {
                chaine.append(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (UnsupportedOperationException e) {
            e.printStackTrace();

        }
        return chaine.toString();
    }
}

logcat告诉我们:

共有1个答案

苏边浩
2023-03-14
    public class Network extends AsyncTask <String, Void, String> {
    public String urlString = ("http://localhost:3000");
    HttpURLConnection connection;
    URL url;
    StringBuffer chaine;

    @Override
    protected String doInBackground(String... params) {

    Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                chaine = new StringBuffer("");
        try {
            url = new URL(urlString);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-Agnet", "");
            connection.setRequestMethod("POST");
            connection.setDoInput(true);
            connection.connect();

            InputStream inputStream = connection.getInputStream();

            BufferedReader rd = new BufferedReader(new       InputStreamReader(inputStream));
            String line = "";
            while ((line = rd.readLine()) != null) {
                chaine.append(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (UnsupportedOperationException e) {
            e.printStackTrace();

        }
            }
        });
        thread.start();

        return chaine.toString();
    }
}
 类似资料:
  • 我是Vue新手,我有一个网页组件(电影歌曲列表),它从页面路由参数(通过此.$store.state.route.params.movieId)接收电影id,然后使用以下命令从服务器上的数据库获取实际用户歌曲数据:this。movie=(等待MoviesService.show(movieId))。数据,show函数是通过id查找db中的参数,并将内容发送回前端。 我的问题是,每当我点击查看按钮时

  • 你好,特别是乔什·朗爵士!菲律宾的问候! 我只是想就我和祖尔的问题寻求帮助。我正在使用配置服务器、Eureka Discovery、Zuul API网关和身份验证服务,为通过API网关访问资源服务的所有客户开发Spring Cloud微服务。除了通过API网关调用其中一个资源服务(在我的示例书服务中)之外,我所有这些组件都工作得非常好,API网关从数据库服务器获取数据,其中包含300多条记录。ne

  • 问题内容: 我试图使用Angular从远程WS以Json格式获取数据,但遇到了一些麻烦。数据正确地来自Web服务,但是我不能在控制器内部使用它。这是为什么?角度代码: HTML: 问题答案: 您应该将$ http.get放入控制器中。 而且,Web服务返回的对象不是数组。因此,您的ng-repeat应该是这样的: 这是一个工作示例:

  • 您是否知道是否有任何方法可以从MainActivity启动服务,发送一些数据,并在服务完成后从服务获取数据。例如: 此外,如果这是不可能的,您建议采用什么替代方案,其中MainActivity可以访问来自DataFromInternetService的数据。班 注意:我不想使用LoaderManager,我使用服务来执行不会影响UI的后台任务。

  • 问题内容: 我有一个应用程序,我想在其中从php Web服务器获取json数据到android mobile。我所拥有的是一个URL,点击该URL将为我提供json数据,例如 。但我想在我的android手机中检索此json格式,并从json格式获取经度和纬度值。 我们如何在android mobile上获得它呢? 提前致谢.. 问题答案: 首先做URL连接 JSON字串 在下面,我正在获取国家/

  • 我想创建一个应用程序,它始终在后台运行,并在每15分钟从服务器获取数据。如何在我的APP中实现这个后台服务?