我的合作伙伴计算机中有一个文本文件,托管在服务器上。我正在尝试检索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();
}
});
}
答案 0 :(得分:0)
while((line = br.readLine()) != null) {
result.setText(line);
}
结果无法在与UI THread不同的线程中运行。 使用
while((line = br.readLine()) != null) {
final String finalLine = line;
runOnUiThread(new Runnable() {
@Override
public void run() {
result.setText(finalLine);
}
});
}
答案 1 :(得分: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);
答案 2 :(得分:0)
这可能是因为NetworkOnMainThreadException
HttpURLConnection con = (HttpURLConnection)url.openConnection();
被解雇了
您不应该在蜂窝及以上版本的主线程上执行网络操作,这会导致此错误。因为它永远不会执行while循环。
使用AsyncTask
代替执行网络操作。这是一个链接:How to fix android.os.NetworkOnMainThreadException?