我搜索了互联网,并开发了我认为可以以可读形式获取网站 html
的代码。但是,我仍然无法完成这项工作。这是我的代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadTask task = new DownloadTask();
task.execute("http://www.cnn.com");
}
private class DownloadTask extends AsyncTask<String, Void, String>{
@Override
protected String doInBackground(String... urls) {
HttpResponse response = null;
HttpGet httpGet = null;
HttpClient mHttpClient = null;
String s = "";
try {
if(mHttpClient == null){
mHttpClient = new DefaultHttpClient();
}
httpGet = new HttpGet(urls[0]);
response = mHttpClient.execute(httpGet);
s = EntityUtils.toString(response.getEntity(), "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
return s;
}
@Override
protected void onPostExecute(String result){
final TextView textview1 = (TextView) findViewById(R.id.headline);
textview1.setText(result);
}
}
}
当我尝试此操作时,应用程序在启动时崩溃,LogCat
如下所示:
07-26 16:13:42.561: W/dalvikvm(23584): threadid=12: thread exiting with uncaught exception (group=0x416dfda0)
07-26 16:13:42.561: E/AndroidRuntime(23584): FATAL EXCEPTION: AsyncTask #1
07-26 16:13:42.561: E/AndroidRuntime(23584): Process: com.app.firstapp, PID: 23584
07-26 16:13:42.561: E/AndroidRuntime(23584): java.lang.RuntimeException: An error occured while executing doInBackground()
我不知道为什么会发生这种情况,有谁知道如何修改我的代码以使其工作?提前致谢。
最佳答案
jsoup 可能对您有帮助。 链接:http://jsoup.org
要在 jsoup 中获取 HTML 页面,您只需执行以下操作:
Jsoup.connect("http://google.com ").get();
然后,您可以从该 HTML 使用 Jsoup 解析您需要的 HTML 中的任何数据。 链接:http://jsoup.org/cookbook/extracting-data/dom-navigation
编辑:我想念这个问题。我以为您在获取 HTML 时遇到问题,而不是后台出现问题。
关于java - Android:检索网站 html - 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975605/