获得服务器数据的代码

来源:互联网 发布:陇西广电网络客服电话 编辑:程序博客网 时间:2024/06/05 05:18

//从服务器获得数据

privateTextView ptv;

privateButton btn_next;

 

privateHandler pic_hdl;

 

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

         // TODO Auto-generated method stub

         super.onCreate(savedInstanceState);

         setContentView(R.layout.painting);

        

         ptv = (TextView)findViewById(R.id.ptv);

         btn_next =(Button)findViewById(R.id.btn_loadnext);

        

         btn_next.setOnClickListener(newButtonListener());

        

         pic_hdl = new PicHandler();

}

 

classButtonListener implements OnClickListener{

 

         @Override

         public void onClick(View v) {

                 // TODO Auto-generated methodstub

                 if( v.getId() ==R.id.btn_loadnext){

                          Thread t = newLoadPicThread();

                          t.start();

                 }

         }

        

}

 

classLoadPicThread extends Thread{

         @Override

         public void run(){

                 HttpClient httpClient = newDefaultHttpClient();

                 HttpGet httpGet = newHttpGet("http://www.nowamagic.net/academy/android/");

                 try {

                          HttpResponse rsp =httpClient.execute(httpGet);

                          int code =rsp.getStatusLine().getStatusCode();

                          if( code == 200 ){

                                   HttpEntityentity = rsp.getEntity();

                                   InputStreamis = entity.getContent();

                                   BufferedReaderreader = new BufferedReader(new InputStreamReader(is));

                                   String s =reader.readLine();

                                  

                                   Message msg =pic_hdl.obtainMessage();

                                   msg.obj ="已从服务器获取的数据:"+ s;

                                   pic_hdl.sendMessage(msg);

                          }

                                  

                 } catch (Exception e) {

                          // TODO Auto-generatedcatch block

                          e.printStackTrace();

                 }

                

         }

}

 

classPicHandler extends Handler{

 

         @Override

         public void handleMessage(Message msg){

                 // TODO Auto-generated methodstub

                 String s = (String)msg.obj;

                 ptv.setText(s);

         }

        

}

关键是 LoadPicThread里的代码,我们简单介绍一下:

1.    在面向对象的世界里,一切都用对象表示。

2.    HttpClient代表客户端的对象,HttpGet代表请求的对象,HttpResponse代表服务器响应的对象,HttpEntity代表返回的数据的实体对象,然后用流的方式将数据读取。

3.    ……就这么多,没第三条了。

App 运行效果:

差点忘了,需要在 Manifest.xml里加上这么一句(授权访问网络)才能访问网络:

<uses-permissionandroid:name="android.permission.INTERNET" />

 

0 0
原创粉丝点击