1. 程式人生 > >Android 網路通訊之HTTP請求通訊

Android 網路通訊之HTTP請求通訊

Android網路通訊平臺支援還是比較豐富的,除了相容J2ME中的java.netapi外還提供了一下Android平臺獨有的類android.net這個Package。一種是GET方式,一種是POST方式。然後HttpClient的Get/Post方式。似乎更強大的是org.apache.http類,這個是apache實驗室開源的包,對於Http請求處理很方便。

android 向web伺服器傳送post請求並獲取結果,因為 需要訪問到網路必須要有許可權,先在AndroidManifest.xml中加入如下配置:

[java] view plain copy print?
  1. <uses-permission android:name=
    "android.permission.INTERNET"/>    
    <uses-permission android:name="android.permission.INTERNET"/>  

1.傳送post請求並獲取結果的activity 程式碼如下(結果返回1(成功)或-1(失敗0)): [java] view plain copy print?
  1. btnOK.setOnClickListener(new OnClickListener(){    
  2. @Override
  3. publicvoid onClick(View view) {    
  4.     String url="http://192.168.123.7:8900/Login.aspx"
    ;    
  5.     HttpPost httpRequest=null;    
  6.     List<NameValuePair> params=null;    
  7.     HttpResponse httpResponse=null;    
  8.     //建立HttpPost連結  
  9.     httpRequest=new HttpPost(url);    
  10.     //Post操作引數必須使用NameValuePair[]陣列儲存  
  11.     params=new ArrayList<NameValuePair>();    
  12.     params.add(new BasicNameValuePair(
    "domain",domain.getText().toString()));    
  13.     params.add(new BasicNameValuePair("uid",uid.getText().toString()));    
  14.     params.add(new BasicNameValuePair("pwd",pwd.getText().toString()));    
  15.     try
  16.     {       
  17.         //傳送Http Request  
  18.         httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));    
  19.         //取得Http Response  
  20.         httpResponse=new DefaultHttpClient().execute(httpRequest);    
  21.         //若狀態碼為200  
  22.         if(httpResponse.getStatusLine().getStatusCode()==200)    
  23.         {    
  24.             //獲得返回的資料  
  25.             String strResult=EntityUtils.toString(httpResponse.getEntity());    
  26.              if(strResult.equalsIgnoreCase("1"))    
  27.              {    
  28.                 // openDialog("登入成功!");  
  29.                 new AlertDialog.Builder(Login.this)    
  30.                 .setTitle("提示").setMessage("登入成功!")    
  31.                 .setPositiveButton("確定",new DialogInterface.OnClickListener() {    
  32.                     @Override
  33.                     publicvoid onClick(DialogInterface arg0, int arg1) {    
  34.                         // 跳轉到另一個Acitivity並傳值  
  35.                         Intent intent=new Intent();    
  36.                         intent.putExtra("curUserId",domain.getText().toString()+"/"+ uid.getText().toString());    
  37.                         intent.setClass(Login.this, Holiday.class);    
  38.                         Login.this.startActivity(intent);    
  39.                     }    
  40.                 }).show();     
  41.              }    
  42.              elseif(strResult.equalsIgnoreCase("0"))    
  43.              {    
  44.                  openDialog("您輸入的資訊有誤!");    
  45.              }    
  46.         }    
  47.         else
  48.         {    
  49.             openDialog("Error!");    
  50.             }    
  51.     }    
  52.     catch(Exception e)    
  53.     {    
  54.         e.printStackTrace();    
  55.     }    
  56. }});    
    btnOK.setOnClickListener(new OnClickListener(){  
          
    @Override  
    public void onClick(View view) {  
        String url="http://192.168.123.7:8900/Login.aspx";  
        HttpPost httpRequest=null;  
        List<NameValuePair> params=null;  
        HttpResponse httpResponse=null;  
        //建立HttpPost連結  
        httpRequest=new HttpPost(url);  
        //Post操作引數必須使用NameValuePair[]陣列儲存  
        params=new ArrayList<NameValuePair>();  
        params.add(new BasicNameValuePair("domain",domain.getText().toString()));  
        params.add(new BasicNameValuePair("uid",uid.getText().toString()));  
        params.add(new BasicNameValuePair("pwd",pwd.getText().toString()));  
          
        try  
        {     
            //傳送Http Request  
            httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));  
            //取得Http Response  
            httpResponse=new DefaultHttpClient().execute(httpRequest);  
            //若狀態碼為200  
            if(httpResponse.getStatusLine().getStatusCode()==200)  
            {  
                //獲得返回的資料  
                String strResult=EntityUtils.toString(httpResponse.getEntity());  
                 if(strResult.equalsIgnoreCase("1"))  
                 {  
                    // openDialog("登入成功!");  
                    new AlertDialog.Builder(Login.this)  
                    .setTitle("提示").setMessage("登入成功!")  
                    .setPositiveButton("確定",new DialogInterface.OnClickListener() {  
                        @Override  
                        public void onClick(DialogInterface arg0, int arg1) {  
                            // 跳轉到另一個Acitivity並傳值  
                            Intent intent=new Intent();  
                            intent.putExtra("curUserId",domain.getText().toString()+"/"+ uid.getText().toString());  
                            intent.setClass(Login.this, Holiday.class);  
                            Login.this.startActivity(intent);  
                        }  
                    }).show();   
                 }  
                 else if(strResult.equalsIgnoreCase("0"))  
                 {  
                     openDialog("您輸入的資訊有誤!");  
                 }  
            }  
            else  
            {  
                openDialog("Error!");  
                }  
        }  
        catch(Exception e)  
        {  
            e.printStackTrace();  
        }  
    }});  
2.HttpClient的Get方式傳送請求到伺服器 [java] view plain copy print?
  1. String url = "XXXXXXX";  
  2. HttpClient httpClient = new DefaultHttpClient();  
  3. //建立HttpGet物件
  4. HttpGet httpGet = new HttpGet(url);  
  5. HttpResponse httpResponse;  
  6. try
  7. {  
  8.     //使用execute方法傳送 HttpGet請求,並返回httRresponse物件
  9.     httpResponse = httpClient.execute(httpGet);  
  10.     int statusCode = httpResponse.getStatusLine().getStatusCode();  
  11.     if(statusCode==HttpStatus.SC_OK)  
  12.     {  
  13.         //獲得返回結果
  14.         response=EntityUtils.toString(httpResponse.getEntity());  
  15.     }  
  16. catch (ClientProtocolException e)  
  17. {             
  18.     e.printStackTrace();  
  19. catch (IOException e)  
  20. {             
  21.     e.printStackTrace();  
  22. }  
  23. return response;  
String url = "XXXXXXX";
HttpClient httpClient = new DefaultHttpClient();
//建立HttpGet物件
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse;
try
{
	//使用execute方法傳送 HttpGet請求,並返回httRresponse物件
	httpResponse = httpClient.execute(httpGet);
	int statusCode = httpResponse.getStatusLine().getStatusCode();
	if(statusCode==HttpStatus.SC_OK)
	{
		//獲得返回結果
		response=EntityUtils.toString(httpResponse.getEntity());
	}
				
} catch (ClientProtocolException e)
{			
	e.printStackTrace();
} catch (IOException e)
{			
	e.printStackTrace();
}
return response;

一,GET方式

[java] view plain copy print?
  1. publicclass Activity01 extends Activity {  
  2.  privatefinal String DEBUG_TAG = "System.out";  
  3.  private TextView mTextView ;  
  4.  private Button mButton;  
  5.  protectedvoid onCreate(Bundle savedInstanceState) {  
  6.   super.onCreate(savedInstanceState);  
  7.   setContentView(R.layout.http);  
  8.   mTextView = (TextView)findViewById(R.id.TextView01);  
  9.   mButton = (Button)findViewById(R.id.Button01);  
  10.   mButton.setOnClickListener(new httpListener());  
  11.  }  
  12.  //設定按鈕監聽器
  13.  class httpListener implements OnClickListener{  
  14.   publicvoid onClick(View v) {  
  15.    refresh();  
  16.   }  
  17.  }  
  18.  privatevoid refresh(){  
  19.   String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";  
  20.   //URL可以加引數
  21.   //String httpUrl = "http://192.168.0.101:8080/Test/test.jsp?par=abcdefg";
  22.   String resultData = "";  
  23.   URL url = null;  
  24.   try{  
  25.    //建立一個URL物件
  26.    url = new URL(httpUrl);  
  27.   }catch(MalformedURLException e){  
  28.    Log.d(DEBUG_TAG, "create URL Exception");  
  29.   }  
  30.   //宣告HttpURLConnection物件
  31.   HttpURLConnection urlConn = null;  
  32.   //宣告InputStreamReader物件
  33.   InputStreamReader in = null;  
  34.   //宣告BufferedReader物件
  35.   BufferedReader buffer = null;  
  36.   String inputLine = null;  
  37.   if(url != null){  
  38.    try{  
  39.     //使用HttpURLConnection開啟連線
  40.     urlConn = (HttpURLConnection) url.openConnection();  
  41.     //得到讀取的內容(流)
  42.     in = new InputStreamReader(urlConn.getInputStream());  
  43.     //建立BufferReader物件,輸出時候用到
  44.     buffer = new BufferedReader(in);  
  45.     //使用迴圈來讀取資料
  46.     while ((inputLine = buffer.readLine()) != null) {  
  47.      //在每一行後面加上換行
  48.      resultData += inputLine + "\n";  
  49.     }  
  50.     //設定顯示取的的內容
  51.     if(resultData != null && !resultData.equals("")){  
  52.      mTextView.setText(resultData);  
  53.     }else{  
  54.      mTextView.setText("讀取的內容為空");  
  55.     }  
  56.    }catch(IOException e){  
  57.     e.printStackTrace();  
  58.    }finally{  
  59.     try {  
  60.      //關閉InputStreamReader
  61.      in.close();  
  62.      //關閉URL連線
  63.      urlConn.disconnect();  
  64.     } catch (IOException e) {  
  65.      e.printStackTrace();  
  66.     }  
  67.    }  
  68.   }else{  
  69.    Log.d(DEBUG_TAG, "URL is NULL");  
  70.   }  
  71.  }  
  72. }  
public class Activity01 extends Activity {
 
 private final String DEBUG_TAG = "System.out";
 
 private TextView mTextView ;
 private Button mButton;
 
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.http);
  
  mTextView = (TextView)findViewById(R.id.TextView01);
  mButton = (Button)findViewById(R.id.Button01);
  mButton.setOnClickListener(new httpListener());
 }
 
 //設定按鈕監聽器
 class httpListener implements OnClickListener{
  public void onClick(View v) {
   refresh();
  }
 }

 private void refresh(){
  String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";
  //URL可以加引數
  //String httpUrl = "http://192.168.0.101:8080/Test/test.jsp?par=abcdefg";
  String resultData = "";
  URL url = null;
  try{
   //建立一個URL物件
   url = new URL(httpUrl);
  }catch(MalformedURLException e){
   Log.d(DEBUG_TAG, "create URL Exception");
  }
  //宣告HttpURLConnection物件
  HttpURLConnection urlConn = null;
  //宣告InputStreamReader物件
  InputStreamReader in = null;
  //宣告BufferedReader物件
  BufferedReader buffer = null;
  String inputLine = null;
  if(url != null){
   try{
    //使用HttpURLConnection開啟連線
    urlConn = (HttpURLConnection) url.openConnection();
    //得到讀取的內容(流)
    in = new InputStreamReader(urlConn.getInputStream());
    //建立BufferReader物件,輸出時候用到
    buffer = new BufferedReader(in);
    //使用迴圈來讀取資料
    while ((inputLine = buffer.readLine()) != null) {
     //在每一行後面加上換行
     resultData += inputLine + "\n";
    }
    //設定顯示取的的內容
    if(resultData != null && !resultData.equals("")){
     mTextView.setText(resultData);
    }else{
     mTextView.setText("讀取的內容為空");
    }
   }catch(IOException e){
    e.printStackTrace();
   }finally{
    try {
     //關閉InputStreamReader
     in.close();
     //關閉URL連線
     urlConn.disconnect();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }else{
   Log.d(DEBUG_TAG, "URL is NULL");
  }
 }
}
二,POST方式 [java] view plain copy print?
  1. publicclass Activity03 extends Activity {  
  2.  privatefinal String DEBUG_TAG = "System.out";  
  3.  private TextView mTextView ;  
  4.  private Button mButton;  
  5.  protectedvoid onCreate(Bundle savedInstanceState) {  
  6.   super.onCreate(savedInstanceState);  
  7.   setContentView(R.layout.http);  
  8.   mTextView = (TextView)findViewById(R.id.TextView01);  
  9.   mButton = (Button)findViewById(R.id.Button01);  
  10.   mButton.setOnClickListener(new httpListener());  
  11.  }  
  12.  //設定按鈕監聽器
  13.  class httpListener implements OnClickListener{  
  14.   publicvoid onClick(View v) {  
  15.    refresh();  
  16.   }  
  17.  }  
  18.  privatevoid refresh(){  
  19.   String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";  
  20.   String resultData = "";  
  21.   URL url = null;  
  22.   try{  
  23.    //建立一個URL物件
  24.    url = new URL(httpUrl);  
  25.   }catch(MalformedURLException e){  
  26.    Log.d(DEBUG_TAG, "create URL Exception");  
  27.   }  
  28.   //宣告HttpURLConnection物件
  29.   HttpURLConnection urlConn = null;  
  30.   //宣告InputStreamReader物件
  31.   InputStreamReader in = null;  
  32.   //宣告BufferedReader物件
  33.   BufferedReader buffer = null;  
  34.   String inputLine = null;  
  35.   //宣告DataOutputStream流
  36.   DataOutputStream out = null;  
  37.   if(url != null){  
  38.    try{  
  39.     //使用HttpURLConnection開啟連線
  40.     urlConn = (HttpURLConnection) url.openConnection();  
  41.     //因為這個是POST請求所以要設定為true
  42.     urlConn.setDoInput(true);  
  43.     urlConn.setDoOutput(true);  
  44.     //設定POST方式
  45.     urlConn.setRequestMethod("POST");  
  46.     //POST請求不能設定快取
  47.     urlConn.setUseCaches(false);  
  48.     urlConn.setInstanceFollowRedirects(false);  
  49.     //配置本次連線的Content-type,配置為application/x-www-form-urlencoded的
  50.     urlConn.setRequestProperty("Content-Type""application/x-www-form-urlencoded");  
  51.     //連線,從postUrl.openConnection()至此的配置必須要在connect之前完成
  52.     //要注意的是connectio.getOutputStream會隱含的進行connect
  53.     urlConn.connect();  
  54.     //DataOutputStream流
  55.     out = new DataOutputStream(urlConn.getOutputStream());  
  56.     String content = "par=" + URLEncoder.encode("abcdefg","gb2312");  
  57.     //將要上傳的內容寫入流中
  58.     out.writeBytes(content);  
  59.     //得到讀取的內容(流)
  60.     in = new InputStreamReader(urlConn.getInputStream());  
  61.     //建立BufferReader物件,輸出時候用到
  62.     buffer = new BufferedReader(in);  
  63.     //使用迴圈來讀取資料
  64.     while ((inputLine = buffer.readLine()) != null) {  
  65.      //在每一行後面加上換行
  66.      resultData += inputLine + "\n";  
  67.     }  
  68.     //設定顯示取的的內容
  69.     if(resultData != null && !resultData.equals("")){  
  70.      mTextView.setText(resultData);  
  71.     }else{  
  72.      mTextView.setText("讀取的內容為空");  
  73.     }  
  74.    }catch(IOException e){  
  75.     e.printStackTrace();  
  76.    }finally{  
  77.     try {  
  78.      //重新整理DataOutputStream流
  79.      out.flush();  
  80.      //關閉DataOutputStream流
  81.      out.close();  
  82.      //關閉InputStreamReader
  83.      in.close();  
  84.      //關閉URL連線
  85.      urlConn.disconnect();  
  86.     } catch (IOException e) {  
  87.      e.printStackTrace();  
  88.     }  
  89.    }  
  90.   }else{  
  91.    Log.d(DEBUG_TAG, "URL is NULL");  
  92.   }  
  93.  }  
  94. }  
public class Activity03 extends Activity {
 
 private final String DEBUG_TAG = "System.out";
 
 private TextView mTextView ;
 private Button mButton;
 
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.http);
  
  mTextView = (TextView)findViewById(R.id.TextView01);
  mButton = (Button)findViewById(R.id.Button01);
  mButton.setOnClickListener(new httpListener());
 }
 
 //設定按鈕監聽器
 class httpListener implements OnClickListener{
  public void onClick(View v) {
   refresh();
  }
 }
 
 private void refresh(){
  String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";
  String resultData = "";
  URL url = null;
  try{
   //建立一個URL物件
   url = new URL(httpUrl);
  }catch(MalformedURLException e){
   Log.d(DEBUG_TAG, "create URL Exception");
  }
  //宣告HttpURLConnection物件
  HttpURLConnection urlConn = null;
  //宣告InputStreamReader物件
  InputStreamReader in = null;
  //宣告BufferedReader物件
  BufferedReader buffer = null;
  String inputLine = null;
  //宣告DataOutputStream流
  DataOutputStream out = null;
  if(url != null){
   try{
    //使用HttpURLConnection開啟連線
    urlConn = (HttpURLConnection) url.openConnection();
    //因為這個是POST請求所以要設定為true
    urlConn.setDoInput(true);
    urlConn.setDoOutput(true);
    //設定POST方式
    urlConn.setRequestMethod("POST");
    //POST請求不能設定快取
    urlConn.setUseCaches(false);
    urlConn.setInstanceFollowRedirects(false);
    //配置本次連線的Content-type,配置為application/x-www-form-urlencoded的
    urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    //連線,從postUrl.openConnection()至此的配置必須要在connect之前完成
    //要注意的是connectio.getOutputStream會隱含的進行connect
    urlConn.connect();
    //DataOutputStream流
    out = new DataOutputStream(urlConn.getOutputStream());
    String content = "par=" + URLEncoder.encode("abcdefg","gb2312");
    //將要上傳的內容寫入流中
    out.writeBytes(content);
    //得到讀取的內容(流)
    in = new InputStreamReader(urlConn.getInputStream());
    //建立BufferReader物件,輸出時候用到
    buffer = new BufferedReader(in);
    //使用迴圈來讀取資料
    while ((inputLine = buffer.readLine()) != null) {
     //在每一行後面加上換行
     resultData += inputLine + "\n";
    }
    //設定顯示取的的內容
    if(resultData != null && !resultData.equals("")){
     mTextView.setText(resultData);
    }else{
     mTextView.setText("讀取的內容為空");
    }
   }catch(IOException e){
    e.printStackTrace();
   }finally{
    try {
     //重新整理DataOutputStream流
     out.flush();
     //關閉DataOutputStream流
     out.close();
     
     //關閉InputStreamReader
     in.close();
     //關閉URL連線
     urlConn.disconnect();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }else{
   Log.d(DEBUG_TAG, "URL is NULL");
  }
 }
}
三,HttpClient的Get方式 [java] view plain copy print?
  1. publicclass Activity04 extends Activity {  
  2.  private TextView mTextView ;  
  3.  private Button mButton;  
  4.  protectedvoid onCreate(Bundle savedInstanceState) {  
  5.   super.onCreate(savedInstanceState);  
  6.   setContentView(R.layout.http);  
  7.   mTextView = (TextView)findViewById(R.id.TextView01);  
  8.   mButton = (Button)findViewById(R.id.Button01);  
  9.   mButton.setOnClickListener(new httpListener());  
  10.  }  
  11.  //設定按鈕監聽器
  12.  class httpListener implements OnClickListener{  
  13.   publicvoid onClick(View v) {  
  14.    String httpUrl = "http://192.168.0.101:8080/Test/test.jsp?par=HttpClient_android_Get";  
  15.    //HttpGet連線物件
  16.    HttpGet httpRequest = new HttpGet(httpUrl);  
  17.    try{  
  18.     //取的HttpClient物件
  19.     HttpClient httpclient = new DefaultHttpClient();  
  20.     //請求HttpClient,取的HttpResponse
  21.     HttpResponse httpResponse = httpclient.execute(httpRequest);  
  22.     //請求成功
  23.     if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){  
  24.      //取的返回的字串
  25.      String strResult = EntityUtils.toString(httpResponse.getEntity()); //這個返回值可能會在行尾出現小方格
  26.      //在TextView要顯示的文字過濾掉回車符("\r")就可以正常顯示了。
  27.      String strsResult = strResult.replace("\r""");  
  28.      mTextView.setText(strsResult);  
  29.     }else{  
  30.      mTextView.setText("請求錯誤");  
  31.     }  
  32.    }catch(ClientProtocolException e){  
  33.     mTextView.setText(e.getMessage().toString());  
  34.    }catch(IOException e){  
  35.     mTextView.setText(e.getMessage().toString());  
  36.    }catch(Exception e){  
  37.     mTextView.setText(e.getMessage().toString());  
  38.    }  
  39.   }  
  40.  }  
  41. }  
public class Activity04 extends Activity {

 private TextView mTextView ;
 private Button mButton;
 
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.http);
  mTextView = (TextView)findViewById(R.id.TextView01);
  mButton = (Button)findViewById(R.id.Button01);
  mButton.setOnClickListener(new httpListener());
 }
 
 //設定按鈕監聽器
 class httpListener implements OnClickListener{
  public void onClick(View v) {
   String httpUrl = "http://192.168.0.101:8080/Test/test.jsp?par=HttpClient_android_Get";
   //HttpGet連線物件
   HttpGet httpRequest = new HttpGet(httpUrl);
   try{
    //取的HttpClient物件
    HttpClient httpclient = new DefaultHttpClient();
    //請求HttpClient,取的HttpResponse
    HttpResponse httpResponse = httpclient.execute(httpRequest);
    //請求成功
    if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
     //取的返回的字串
     String strResult = EntityUtils.toString(httpResponse.getEntity()); //這個返回值可能會在行尾出現小方格
     //在TextView要顯示的文字過濾掉回車符("\r")就可以正常顯示了。
     String strsResult = strResult.replace("\r", "");
     mTextView.setText(strsResult);
    }else{
     mTextView.setText("請求錯誤");
    }
   }catch(ClientProtocolException e){
    mTextView.setText(e.getMessage().toString());
   }catch(IOException e){
    mTextView.setText(e.getMessage().toString());
   }catch(Exception e){
    mTextView.setText(e.getMessage().toString());
   }
  }
 }
}
四,HttpClient的POST方式
[java] view plain copy print?
  1. publicclass Activity05 extends Activity {  
  2.  private TextView mTextView ;  
  3.  private Button mButton;  
  4.  protectedvoid onCreate(Bundle savedInstanceState) {  
  5.   super.onCreate(savedInstanceState);  
  6.   setContentView(R.layout.http);  
  7.   mTextView = (TextView)findViewById(R.id.TextView01);  
  8.   mButton = (Button)findViewById(R.id.Button01);  
  9.   mButton.setOnClickListener(new httpListener());  
  10.  }  
  11.  //設定按鈕監聽器
  12.  class httpListener implements OnClickListener{  
  13.   publicvoid onClick(View arg0) {  
  14.    String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";  
  15.    //建立HttpPost連線物件
  16.    HttpPost httpRequest = new HttpPost(httpUrl);  
  17.    //使用NameValuePair來儲存要傳遞的Post引數
  18.    List<NameValuePair> params = new ArrayList<NameValuePair>();  
  19.    //新增要傳遞的引數
  20.    params.add(new BasicNameValuePair("par","HttpClient_android_Post"));  
  21.    try{  
  22.     //設定字符集
  23.     HttpEntity httpentity = new UrlEncodedFormEntity(params,"gb2312");  
  24.     //請求httpRequest
  25.     httpRequest.setEntity(httpentity);  
  26.     //取的預設的HttpClient
  27.     HttpClient httpclient = new DefaultHttpClient();  
  28.     //取的HttpResponse
  29.     HttpResponse httpResponse = httpclient.execute(httpRequest);  
  30.     //HttpStatus.SC_OK表示連線成功
  31.     if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){  
  32.      //取的返回的字串
  33.      String strResult = EntityUtils.toString(httpResponse.getEntity());//這個返回值可能會在行尾出現小方格
  34.      //在TextView要顯示的文字過濾掉回車符("\r")就可以正常顯示了。
  35.      String strsResult = strResult.replace("\r""");  
  36.      mTextView.setText(strsResult);  
  37.     }else{  
  38.      mTextView.setText("請求錯誤");  
  39.     }  
  40.    }catch(ClientProtocolException e){  
  41.     mTextView.setText(e.getMessage().toString());  
  42.    }catch(IOException e){  
  43.     mTextView.setText(e.getMessage().toString());  
  44.    }catch(Exception e){  
  45.     mTextView.setText(e.getMessage().toString());  
  46.    }  
  47.   }  
  48.  }  
  49. }  
public class Activity05 extends Activity {
 
 private TextView mTextView ;
 private Button mButton;

 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.http);
  mTextView = (TextView)findViewById(R.id.TextView01);
  mButton = (Button)findViewById(R.id.Button01);
  mButton.setOnClickListener(new httpListener());
 }
 
 //設定按鈕監聽器
 class httpListener implements OnClickListener{
  public void onClick(View arg0) {
   String httpUrl = "http://192.168.0.101:8080/Test/test.jsp";
   //建立HttpPost連線物件
   HttpPost httpRequest = new HttpPost(httpUrl);
   //使用NameValuePair來儲存要傳遞的Post引數
   List<NameValuePair> params = new ArrayList<NameValuePair>();
   //新增要傳遞的引數
   params.add(new BasicNameValuePair("par","HttpClient_android_Post"));
   try{
    //設定字符集
    HttpEntity httpentity = new UrlEncodedFormEntity(params,"gb2312");
    //請求httpRequest
    httpRequest.setEntity(httpentity);
    //取的預設的HttpClient
    HttpClient httpclient = new DefaultHttpClient();
    //取的HttpResponse
    HttpResponse httpResponse = httpclient.execute(httpRequest);
    //HttpStatus.SC_OK表示連線成功
    if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
     //取的返回的字串
     String strResult = EntityUtils.toString(httpResponse.getEntity());//這個返回值可能會在行尾出現小方格
     //在TextView要顯示的文字過濾掉回車符("\r")就可以正常顯示了。
     String strsResult = strResult.replace("\r", "");
     mTextView.setText(strsResult);
    }else{
     mTextView.setText("請求錯誤");
    }
   }catch(ClientProtocolException e){
    mTextView.setText(e.getMessage().toString());
   }catch(IOException e){
    mTextView.setText(e.getMessage().toString());
   }catch(Exception e){
    mTextView.setText(e.getMessage().toString());
   }
  }
 }
}