Android http get/post传递参数

本程序介绍如何通过HttpClient模块来创建Http连接,并分别以Http Get和Post方法传递参数,连接之后取回web server的返回网页结果。

     注意,在用Post时,传递变量必须用NameValuePais[]数组存储,通过HttpRequest.setEntity()方法来发出http请求。

     此外,也必须通过DefaultHttpClient().execute(httpRequest)添加HttpRequest对象来接收web server的回复,在通过httpResponse.getEntity()取出回复信息。

[java]  view plain copy
  1. /*必需引用apache.http相关类别来建立HTTP联机*/  
  2. import org.apache.http.HttpResponse;   
  3. import org.apache.http.NameValuePair;   
  4. import org.apache.http.client.ClientProtocolException;   
  5. import org.apache.http.client.entity.UrlEncodedFormEntity;   
  6. import org.apache.http.client.methods.HttpGet;  
  7. import org.apache.http.client.methods.HttpPost;   
  8. import org.apache.http.impl.client.DefaultHttpClient;   
  9. import org.apache.http.message.BasicNameValuePair;   
  10. import org.apache.http.protocol.HTTP;   
  11. import org.apache.http.util.EntityUtils;   
  12. /*必需引用java.io 与java.util相关类来读写文件*/  
  13. import java.io.IOException;   
  14. import java.util.ArrayList;   
  15. import java.util.List;   
  16. import java.util.regex.Matcher;  
  17. import java.util.regex.Pattern;  
  18.   
  19. import android.app.Activity;   
  20. import android.os.Bundle;   
  21. import android.view.View;   
  22. import android.widget.Button;   
  23. import android.widget.TextView;   
  24.   
  25. public class EX08_01 extends Activity   
  26. {   
  27.   /*声明两个Button对象,与一个TextView对象*/  
  28.   private Button mButton1,mButton2;   
  29.   private TextView mTextView1;   
  30.      
  31.   /** Called when the activity is first created. */   
  32.   @Override   
  33.   public void onCreate(Bundle savedInstanceState)   
  34.   {   
  35.     super.onCreate(savedInstanceState);   
  36.     setContentView(R.layout.main);   
  37.        
  38.     /*透过findViewById建构子建立TextView与Button对象*/   
  39.     mButton1 =(Button) findViewById(R.id.myButton1);   
  40.     mButton2 =(Button) findViewById(R.id.myButton2);  
  41.     mTextView1 = (TextView) findViewById(R.id.myTextView1);   
  42.        
  43.     /*设定OnClickListener来聆听OnClick事件*/  
  44.     mButton1.setOnClickListener(new Button.OnClickListener()   
  45.     {   
  46.       /*重写onClick事件*/  
  47.       @Override   
  48.       public void onClick(View v)   
  49.       {   
  50.         /*声明网址字符串*/  
  51.         String uriAPI = "http://www.dubblogs.cc:8751/Android/Test/API/Post/index.php";  
  52.         /*建立HTTP Post联机*/  
  53.         HttpPost httpRequest = new HttpPost(uriAPI);   
  54.         /* 
  55.          * Post运作传送变量必须用NameValuePair[]数组储存 
  56.         */  
  57.         List <NameValuePair> params = new ArrayList <NameValuePair>();   
  58.         params.add(new BasicNameValuePair("str""I am Post String"));   
  59.         try   
  60.         {   
  61.           /*发出HTTP request*/  
  62.           httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));   
  63.           /*取得HTTP response*/  
  64.           HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);   
  65.           /*若状态码为200 ok*/  
  66.           if(httpResponse.getStatusLine().getStatusCode() == 200)    
  67.           {   
  68.             /*取出响应字符串*/  
  69.             String strResult = EntityUtils.toString(httpResponse.getEntity());   
  70.             mTextView1.setText(strResult);   
  71.           }   
  72.           else   
  73.           {   
  74.             mTextView1.setText("Error Response: "+httpResponse.getStatusLine().toString());   
  75.           }   
  76.         }   
  77.         catch (ClientProtocolException e)   
  78.         {    
  79.           mTextView1.setText(e.getMessage().toString());   
  80.           e.printStackTrace();   
  81.         }   
  82.         catch (IOException e)   
  83.         {    
  84.           mTextView1.setText(e.getMessage().toString());   
  85.           e.printStackTrace();   
  86.         }   
  87.         catch (Exception e)   
  88.         {    
  89.           mTextView1.setText(e.getMessage().toString());   
  90.           e.printStackTrace();    
  91.         }    
  92.            
  93.       }   
  94.     });   
  95.     mButton2.setOnClickListener(new Button.OnClickListener()   
  96.     {   
  97.       @Override   
  98.       public void onClick(View v)   
  99.       {   
  100.         // TODO Auto-generated method stub   
  101.         /*声明网址字符串*/  
  102.         String uriAPI = "http://www.dubblogs.cc:8751/Android/Test/API/Get/index.php?str=I+am+Get+String";   
  103.         /*建立HTTP Get联机*/  
  104.         HttpGet httpRequest = new HttpGet(uriAPI);   
  105.         try   
  106.         {   
  107.           /*发出HTTP request*/  
  108.           HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);   
  109.           /*若状态码为200 ok*/  
  110.           if(httpResponse.getStatusLine().getStatusCode() == 200)    
  111.           {   
  112.             /*取出响应字符串*/  
  113.             String strResult = EntityUtils.toString(httpResponse.getEntity());  
  114.             /*删除多余字符*/  
  115.             strResult = eregi_replace("(/r/n|/r|/n|/n/r)","",strResult);  
  116.             mTextView1.setText(strResult);   
  117.           }   
  118.           else   
  119.           {   
  120.             mTextView1.setText("Error Response: "+httpResponse.getStatusLine().toString());   
  121.           }   
  122.         }   
  123.         catch (ClientProtocolException e)   
  124.         {    
  125.           mTextView1.setText(e.getMessage().toString());   
  126.           e.printStackTrace();   
  127.         }   
  128.         catch (IOException e)   
  129.         {    
  130.           mTextView1.setText(e.getMessage().toString());   
  131.           e.printStackTrace();   
  132.         }   
  133.         catch (Exception e)   
  134.         {    
  135.           mTextView1.setText(e.getMessage().toString());   
  136.           e.printStackTrace();    
  137.         }    
  138.       }   
  139.     });   
  140.   }  
  141.     /* 自定义字符串取代函数 */  
  142.     public String eregi_replace(String strFrom, String strTo, String strTarget)  
  143.     {  
  144.       String strPattern = "(?i)"+strFrom;  
  145.       Pattern p = Pattern.compile(strPattern);  
  146.       Matcher m = p.matcher(strTarget);  
  147.       if(m.find())  
  148.       {  
  149.         return strTarget.replaceAll(strFrom, strTo);  
  150.       }  
  151.       else  
  152.       {  
  153.         return strTarget;  
  154.       }  
  155.     }  
  156. }   
  

在androidManifest.xml中必须添加权限:

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


转自:http://blog.csdn.net/flying_tao/article/details/6553601


你可能感兴趣的:(java,android,Web,server,存储,button)