Android HttpGet应用程序崩溃

Android HttpGet应用程序崩溃,android,http-get,Android,Http Get,我正在尝试使用下面的代码从Android应用程序中的URL获取HTML源代码。但是,它在HttpResponse response=client.execute(请求)行崩溃。我怎样才能解决这个问题 HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url); HttpResponse response = client.execute(request); String html = ""; I

我正在尝试使用下面的代码从Android应用程序中的URL获取HTML源代码。但是,它在
HttpResponse response=client.execute(请求)行崩溃。我怎样才能解决这个问题

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);

String html = "";
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
    str.append(line);
}
in.close();
html = str.toString();
更新!我是一个新的用户,显然无法发布自己的官方答案,所以这里是:

谢谢你们两个!Hichris的评论和链接为我指明了正确的方向。以下是导致问题的3个障碍:

  • AsyncTask
    应放在同一类文件中,但作为 子类(我可能没有我的术语)
  • 我正在用生成的html代码填充一个文本框。然而,我是在
    AsyncTask
    doInBackground()
    部分中这样做的,而我本应该在
    onPostExecute()
    中这样做
  • 我传递给
    AsyncTask
    的URL未正确转换为
    URI
    。这导致程序在某些URL上崩溃,而在其他URL上则没有

  • 用于网络调用的最佳方法是凌空库检查此链接“”。它非常简单且易于使用。检查以下链接,了解为网络调用“”创建HTTPClient和其他第三方库时出现的问题。

    这可能是由于
    NetworkMainThreadException
    造成的。将此移动到AsyncTask,它将修复它。我尝试创建AsyncTask,但遇到了相同的错误。然而,我对java非常陌生,所以我可能做错了。如何创建一个异步任务?例如,它是放在新的java类文件中,还是可以添加到MainActivity文件中?我找到了AsyncTasks的google说明,但它们没有解释实际代码放在哪里……检查一下,希望它能让您了解将代码放在哪里。它应该在同一个类文件中,但是,它应该声明为一个单独的内部类。现在,如果我按下按钮一次(我使用onclick激活此代码),它就会失败。但是,如果我反复按下按钮,它就会工作。对这个有什么想法吗?我正在加载www.google.com。另外,一些网站似乎一直崩溃,但其他网站却没有。这太荒谬了。