0

我的合作伙伴计算机中有一个文本文件,它托管在服务器上。我正在尝试在我的 Android 应用程序中检索文本文件中的所有字符串值。但是,我的应用程序没有进入 while 循环方法来读取文本文件。有没有办法解决它?我的计算机已连接到我的合作伙伴服务器。

该方法的代码。

connect.setOnClickListener(new View.OnClickListener(){
     public void onClick(View v){
         Thread trd = new Thread(new Runnable(){
             @Override
             public void run(){
                 //code to do the HTTP request
                 try {
                     URL url = new URL("insert url");//your website link
                     HttpURLConnection con = (HttpURLConnection)url.openConnection();
                     BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
                     String line;
                     while((line = br.readLine()) != null){
                         result.setText(line);
                     }
                     con.disconnect();
                 } catch(IOException e) {
                     System.out.println("Error");
                 }
             }
        });
        trd.start();
    }
});
}
4

3 回答 3

0

大概是因为当时NetworkOnMainThreadException被炒了HttpURLConnection con = (HttpURLConnection)url.openConnection();

您不应该在蜂窝及以上版本的主线程上执行网络操作,这会导致此错误。因为它,while循环永远不会执行。

AsyncTask改为用于执行网络操作。这是一个链接: 如何修复 android.os.NetworkOnMainThreadException?

于 2013-05-14T09:30:52.403 回答
0
while((line = br.readLine()) != null)  {

   result.setText(line);

}

结果不能在不同于 UI 线程的线程中运行。利用

while((line = br.readLine()) != null)  {
final String finalLine = line;

runOnUiThread(new Runnable() {
 @Override
 public void run() {
       result.setText(finalLine);
  }
});
}
于 2013-05-14T08:17:22.877 回答
0

尝试这个

 URL url= new URL("insert url");
    BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
    StringBuilder result= new StringBuilder();
                String line;
                while ((line = br.readLine()) != null) {
                    result.append(line + "\n");
                }

                TextView.setText(result);
于 2013-05-14T09:04:37.967 回答