我想下载网页内容,但它不能正常工作
问题描述:
我想下载一个网站并将内容作为字符串显示到日志中,但首先应用需要数小时才能加载,如果加载,我不会获取网站的源代码。我想下载网页内容,但它不能正常工作
public class MainActivity extends AppCompatActivity {
public class DownloadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection)url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data!= -1) {
char current = (char) data;
result += current;
data = reader.read();
}
return result;
}
catch (Exception e){
e.printStackTrace();
return "Failed";
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadTask task = new DownloadTask();
String result = null;
try {
result = task.execute("http://www.kicker.de/").get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
Log.i("Contents of URL", result);
}
}
答
您应该使用的BufferedReader获得}从InputStreamReader的
public class DownloadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
StringBuilder html = new StringBuilder();
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection)url.openConnection();
InputStream in = urlConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
for (String line; (line = reader.readLine()) != null;) {
html.append(line);
}
return html.toString();
}
catch (Exception e){
e.printStackTrace();
return "Failed";
}
finally{
in.close();
}
}
读取实际数据
不要使用'的execute()。获得()'。它击败了Asynctask的目的 –
你有没有看到文档? https://developer.android.com/training/volley/simple.html –