Android应用程序While循环错误
我的合作伙伴计算机中有一个文本文件,托管在服务器上。我正在尝试在Android应用程序中检索文本文件中的所有字符串值。但是,我的应用程序没有输入while循环方法来读取文本文件。有办法解决吗?我的计算机已连接到我的合作伙伴服务器 方法的代码Android应用程序While循环错误,android,while-loop,Android,While Loop,我的合作伙伴计算机中有一个文本文件,托管在服务器上。我正在尝试在Android应用程序中检索文本文件中的所有字符串值。但是,我的应用程序没有输入while循环方法来读取文本文件。有办法解决吗?我的计算机已连接到我的合作伙伴服务器 方法的代码 connect.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ Thread trd = new Thread(new Run
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();
}
});
}
结果不能在与UI线程不同的线程中运行。
使用
试试这个
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);
这可能是因为在
HttpURLConnection con=(HttpURLConnection)url.openConnection()时触发了NetworkOnMainThreadException
代码>
您不应该在导致此错误的蜂窝和更高版本的主线程上执行网络操作。因此,while循环从未执行过
使用AsyncTask
执行网络操作。这里有一个链接:我现在遇到了一个“不能在另一个方法中定义的内部类中引用非最终变量finalLine”错误,在我在eclipse上调试之后,在bufferedreader行之后,它立即跳到catch错误行。应用程序没有进入while循环,可能是什么问题?你真的在使用“插入url”吗?不,stackoverflow不允许发布url,所以我不得不用“插入url”代替它。真正的url是我从正在工作的浏览器中获取的。您是否具有internet权限?您是否在logcat中遇到异常?与NetworkOnMainThreadException类似?否,应用程序在尝试跟踪我的文件或目录时遇到问题。它仍然无法工作。我的应用程序仍然无法在我的合作伙伴服务器中跟踪该文件。我已在使用新的线程方法在另一个线程上运行连接
while((line = br.readLine()) != null) {
final String finalLine = line;
runOnUiThread(new Runnable() {
@Override
public void run() {
result.setText(finalLine);
}
});
}
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);