我是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);
}
}
答案 0 :(得分:2)
注意:您无法在主UI线程上更新数据。
为此,您必须使用 AsyncTask 或带处理程序的主题,并使用 runOnUiThread()方法更新您的数据。
你也可以这样做:
http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html
答案 1 :(得分:1)
让我猜一下,你得到一个NetworkOnMainThreadException
,对吧?使用AsyncTask进行网络任务。不要在UI线程上执行它们。