HttpResponse / httpClient.execute出错

时间:2013-11-21 12:22:00

标签: java android httpconnection

我是Android新手,也是Stackoverflow的新手!

我只是创建虚拟应用来学习http连接。 编译时我在这一行遇到错误

  

HttpResponse getbackdata = http_client.execute(url_data);

我甚至在stackoverflow中搜索但是大多数人建议使用异常处理来捕获UnknownHostException。我做到了。我不知道我在哪里弄乱了代码。 这可能是一个小错误,因为我是初学者,我将从中学习。 在此先感谢。

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);         

        try {
            HttpClient http_client=new DefaultHttpClient();
            URI url=new URI("http://www.mysite.com");
            HttpGet url_data=new HttpGet(url);

            HttpResponse getbackdata= http_client.execute(url_data);

            InputStreamReader in =new InputStreamReader(getbackdata.getEntity().getContent());
            BufferedReader br = new BufferedReader(in);

            StringBuffer sb=new StringBuffer("");
            String info="";
            String nl=System.getProperty("line.separator");

            while((info=br.readLine())!=null){
                sb.append(info.toString()+nl);
            }
            br.close();
            TextView output=(TextView) findViewById(R.id.display_output);
            output.setText(sb.toString());
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            Log.d("ARR_ERROR","UnknownHostException : "+e);
        }
         catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            Log.d("ARR_ERROR","ClientProtocolException : "+e);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.d("ARR_ERROR","IOException : "+e);
        }
         catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        Log.d("ARR_ERROR","URISyntaxException : "+e);
    }


}

2 个答案:

答案 0 :(得分:2)

注意:您无法在主UI线程上更新数据。

为此,您必须使用 AsyncTask 带处理程序的主题,并使用 runOnUiThread()方法更新您的数据。

你也可以这样做:

http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html

答案 1 :(得分:1)

让我猜一下,你得到一个NetworkOnMainThreadException,对吧?使用AsyncTask进行网络任务。不要在UI线程上执行它们。