1. 程式人生 > >Android HTTP協議請求網路(二)之HttpClient方式

Android HTTP協議請求網路(二)之HttpClient方式

複製程式碼
 1 package com.example.m04_http01;
 2 
 3 import org.apache.http.HttpEntity;
 4 import org.apache.http.HttpResponse;
 5 import org.apache.http.client.HttpClient;
 6 import org.apache.http.client.methods.HttpGet;
 7 import org.apache.http.impl.client.DefaultHttpClient;
 8 import org.apache.http.util.EntityUtils;
9 import android.app.Activity; 10 import android.os.Bundle; 11 import android.os.Handler; 12 import android.os.Message; 13 import android.view.View; 14 import android.view.View.OnClickListener; 15 import android.widget.Button; 16 import android.widget.TextView; 17 18 public class MainActivity extends
Activity { 19 20 public static final int SHOW_RESPONSE = 0; 21 22 private Button button_sendRequest; 23 private TextView textView_response; 24 25 //新建Handler的物件,在這裡接收Message,然後更新TextView控制元件的內容 26 private Handler handler = new Handler() { 27 28 @Override 29 public
void handleMessage(Message msg) { 30 super.handleMessage(msg); 31 switch (msg.what) { 32 case SHOW_RESPONSE: 33 String response = (String) msg.obj; 34 textView_response.setText(response); 35 break; 36 37 default: 38 break; 39 } 40 } 41 42 }; 43 44 @Override 45 protected void onCreate(Bundle savedInstanceState) { 46 super.onCreate(savedInstanceState); 47 setContentView(R.layout.activity_main); 48 textView_response = (TextView)findViewById(R.id.TextView1); 49 button_sendRequest = (Button)findViewById(R.id.button1); 50 51 button_sendRequest.setOnClickListener(new OnClickListener() { 52 53 //點選按鈕時,執行sendRequestWithHttpClient()方法裡面的執行緒 54 @Override 55 public void onClick(View v) { 56 // TODO Auto-generated method stub 57 sendRequestWithHttpClient(); 58 } 59 }); 60 } 61 62 //方法:傳送網路請求,獲取百度首頁的資料。在裡面開啟執行緒 63 private void sendRequestWithHttpClient() { 64 new Thread(new Runnable() { 65 66 @Override 67 public void run() { 68 //用HttpClient傳送請求,分為五步 69 //第一步:建立HttpClient物件 70 HttpClient httpCient = new DefaultHttpClient(); 71 //第二步:建立代表請求的物件,引數是訪問的伺服器地址 72 HttpGet httpGet = new HttpGet("http://www.baidu.com"); 73 74 try { 75 //第三步:執行請求,獲取伺服器發還的相應物件 76 HttpResponse httpResponse = httpCient.execute(httpGet); 77 //第四步:檢查相應的狀態是否正常:檢查狀態碼的值是200表示正常 78 if (httpResponse.getStatusLine().getStatusCode() == 200) { 79 //第五步:從相應物件當中取出資料,放到entity當中 80 HttpEntity entity = httpResponse.getEntity(); 81 String response = EntityUtils.toString(entity,"utf-8");//將entity當中的資料轉換為字串 82 83 //在子執行緒中將Message物件發出去 84 Message message = new Message(); 85 message.what = SHOW_RESPONSE; 86 message.obj = response.toString(); 87 handler.sendMessage(message); 88 } 89 90 } catch (Exception e) { 91 // TODO Auto-generated catch block 92 e.printStackTrace(); 93 } 94 95 } 96 }).start();//這個start()方法不要忘記了 97 98 } 99 }
複製程式碼