我是安卓系统的新手,也是Stackoverflow的新手!
我只是在创建虚拟应用程序来学习http连接。在编译时,我在这行中遇到了一个错误
HttpResponse getbackdata=http_client.exexecute(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);
}
}
注意:您不能在主UI线程上更新数据。
为此,您必须使用AsyncTask或ThreadwithHandler,并使用runOnUiThread()方法更新数据。
你也可以这样做:
http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html
让我猜一下,您得到的是NetworkOnMainThreadException
,对吧?将AsyncTask用于网络任务。不要在UI线程上执行这些操作。