zoukankan      html  css  js  c++  java
  • android向web提交参数的4种方式总结,附带网站案例源码

    第一种:基于http协议通过get方式提交参数

    1.对多个参数的封装

     1 public static String get_save(String name, String phone) {
     2         /**
     3          * 出现乱码原因有2个 提交参数没有对中文编码,解决方法:使用URLEncoder.encode(xx,xx)对要提交的汉字转码
     4          * tomatCAT服务器默认采用iso859-1编码,解决方法:把PHP页面保存为UTF-8格式
     5          */
     6         String path = "http://192.168.0.117/testxml/web.php";
     7         Map<String, String> params = new HashMap<String, String>();
     8         try {
     9             params.put("name", URLEncoder.encode(name, "UTF-8"));
    10             params.put("phone", phone);
    11             return sendgetrequest(path, params);
    12         } catch (Exception e) {
    13             // TODO Auto-generated catch block
    14             e.printStackTrace();
    15         }
    16         return "提交失败";
    17     }
    get_save()

    2.提交参数

     1 private static String sendgetrequest(String path, Map<String, String> params)
     2             throws Exception {
     3 
     4         // path="http://192.168.0.117/testxml/web.php?name=xx&phone=xx";
     5         StringBuilder url = new StringBuilder(path);
     6         url.append("?");
     7         for (Map.Entry<String, String> entry : params.entrySet()) {
     8             url.append(entry.getKey()).append("=");
     9             url.append(entry.getValue()).append("&");
    10         }
    11         url.deleteCharAt(url.length() - 1);
    12         URL url1 = new URL(url.toString());
    13         HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
    14         conn.setConnectTimeout(5000);
    15         conn.setRequestMethod("GET");
    16         if (conn.getResponseCode() == 200) {
    17             InputStream instream = conn.getInputStream();
    18             ByteArrayOutputStream outstream = new ByteArrayOutputStream();
    19             byte[] buffer = new byte[1024];
    20             while (instream.read(buffer) != -1) {
    21                 outstream.write(buffer);
    22             }
    23             instream.close();
    24             return outstream.toString().trim();
    25 
    26         }
    27         return "连接失败";
    28     }
    sendgetrequest

     第二种:基于http协议通过post方式提交参数

    1.对多个参数封装

     1 public static String post_save(String name, String phone) {
     2         /**
     3          * 出现乱码原因有2个 提交参数没有对中文编码,解决方法:使用URLEncoder.encode(xx,xx)对要提交的汉字转码
     4          * tomatCAT服务器默认采用iso859-1编码,解决方法:把PHP页面保存为UTF-8格式
     5          */
     6         String path = "http://192.168.0.117/testxml/web.php";
     7         Map<String, String> params = new HashMap<String, String>();
     8         try {
     9             params.put("name", URLEncoder.encode(name, "UTF-8"));
    10             params.put("phone", phone);
    11             return sendpostrequest(path, params);
    12         } catch (Exception e) {
    13             // TODO Auto-generated catch block
    14             e.printStackTrace();
    15         }
    16         return "提交失败";
    17     }
    post_save

    2.提交参数

     1 private static String sendpostrequest(String path,
     2             Map<String, String> params) throws Exception {
     3         // name=xx&phone=xx
     4         StringBuilder data = new StringBuilder();
     5         if (params != null && !params.isEmpty()) {
     6             for (Map.Entry<String, String> entry : params.entrySet()) {
     7                 data.append(entry.getKey()).append("=");
     8                 data.append(entry.getValue()).append("&");
     9             }
    10             data.deleteCharAt(data.length() - 1);
    11         }
    12         byte[] entiy = data.toString().getBytes(); // 生成实体数据
    13         URL url = new URL(path);
    14         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    15         conn.setReadTimeout(5000);
    16         conn.setRequestMethod("POST");
    17         conn.setDoOutput(true);// 允许对外输出数据
    18         conn.setRequestProperty("Content-Type",
    19                 "application/x-www-form-urlencoded");
    20         conn.setRequestProperty("Content-Length", String.valueOf(entiy.length));
    21         OutputStream outstream = conn.getOutputStream();
    22         outstream.write(entiy);
    23         if (conn.getResponseCode() == 200) {
    24             InputStream instream = conn.getInputStream();
    25             ByteArrayOutputStream byteoutstream = new ByteArrayOutputStream();
    26             byte[] buffer = new byte[1024];
    27             while (instream.read(buffer) != -1) {
    28                 byteoutstream.write(buffer);
    29             }
    30             instream.close();
    31             return byteoutstream.toString().trim();
    32         }
    33         return "提交失败";
    34     }
    sendpostrequest()

    第三种:基于httpclient类通过post方式提交参数

    1.对多个参数的封装

     1 public static String httpclient_postsave(String name, String phone) {
     2         /**
     3          * 出现乱码原因有2个 提交参数没有对中文编码,解决方法:使用URLEncoder.encode(xx,xx)对要提交的汉字转码
     4          * tomatCAT服务器默认采用iso859-1编码,解决方法:把PHP页面保存为UTF-8格式
     5          */
     6         String path = "http://192.168.0.117/testxml/web.php";
     7         Map<String, String> params = new HashMap<String, String>();
     8         try {
     9             params.put("name", name);
    10             params.put("phone", phone);
    11             return sendhttpclient_postrequest(path, params);
    12         } catch (Exception e) {
    13             // TODO Auto-generated catch block
    14             e.printStackTrace();
    15         }
    16         return "提交失败";
    17     }
    httpclient_postsave

    2.提交参数

     1 private static String sendhttpclient_postrequest(String path,Map<String, String> params) {
     2         List<NameValuePair> pairs = new ArrayList<NameValuePair>();
     3             for (Map.Entry<String, String> entry : params.entrySet()) {
     4                 pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
     5             }
     6         try {
     7             UrlEncodedFormEntity entity=new  UrlEncodedFormEntity(pairs,"UTF-8");
     8             HttpPost httpost=new HttpPost(path);
     9             httpost.setEntity(entity);
    10             HttpClient client=new DefaultHttpClient();
    11             HttpResponse response= client.execute(httpost);
    12         if(response.getStatusLine().getStatusCode()==200){
    13             
    14             return EntityUtils.toString(response.getEntity(), "utf-8");
    15         }
    16         } catch (Exception e) {
    17             // TODO Auto-generated catch block
    18             e.printStackTrace();
    19         }
    20 
    21         return null;
    22     }
    sendhttpclient_postrequest()

    第四种方式:基于httpclient通过get提交参数

    1.多个参数的封装

     1 public static String httpclient_getsave(String name, String phone) {
     2         /**
     3          * 出现乱码原因有2个 提交参数没有对中文编码,解决方法:使用URLEncoder.encode(xx,xx)对要提交的汉字转码
     4          * tomatCAT服务器默认采用iso859-1编码,解决方法:把PHP页面保存为UTF-8格式
     5          */
     6         String path = "http://192.168.0.117/testxml/web.php";
     7         Map<String, String> params = new HashMap<String, String>();
     8         try {
     9             params.put("name", name);
    10             params.put("phone", phone);
    11             return sendhttpclient_getrequest(path, params);
    12         } catch (Exception e) {
    13             // TODO Auto-generated catch block
    14             e.printStackTrace();
    15         }
    16         return "提交失败";
    17     }
    httpclient_getsave

    2.提交参数

     1     private static String sendhttpclient_getrequest(String path,Map<String, String> map_params) {
     2         List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
     3             for (Map.Entry<String, String> entry : map_params.entrySet()) {
     4                 params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
     5             }
     6         String param=URLEncodedUtils.format(params, "UTF-8");
     7         HttpGet getmethod=new HttpGet(path+"?"+param);
     8         HttpClient httpclient=new DefaultHttpClient();
     9         try {
    10             HttpResponse response=httpclient.execute(getmethod);
    11             if(response.getStatusLine().getStatusCode()==200){
    12                 return EntityUtils.toString(response.getEntity(), "utf-8");                
    13             }            
    14         } catch (ClientProtocolException e) {
    15             // TODO Auto-generated catch block
    16             e.printStackTrace();
    17         } catch (IOException e) {
    18             // TODO Auto-generated catch block
    19             e.printStackTrace();
    20         }        
    21         return null;
    22     }
    sendhttpclient_getrequest()

     4种方式完整测试案例源码

     1 package caicai.web;
     2 
     3 import android.app.Activity;
     4 import android.os.Bundle;
     5 import android.view.View;
     6 import android.widget.EditText;
     7 import android.widget.TextView;
     8 
     9 public class Cai_webActivity extends Activity {
    10   
    11     TextView success;
    12     String name;
    13     String phone;    
    14     EditText name_view;
    15     EditText phone_view;
    16     public void onCreate(Bundle savedInstanceState) {
    17         super.onCreate(savedInstanceState);
    18         setContentView(R.layout.main);      
    19         name_view=(EditText) findViewById(R.id.name);       
    20         phone_view=(EditText) findViewById(R.id.phone);       
    21         success=(TextView) findViewById(R.id.success);
    22     }   
    23     public void get_save(View v){       
    24         name=name_view.getText().toString();
    25         phone=phone_view.getText().toString();
    26         success.setText(service.get_save(name,phone));         
    27     }
    28     public void post_save(View v){
    29         name=name_view.getText().toString();
    30         phone=phone_view.getText().toString();
    31         success.setText(service.post_save(name,phone)); 
    32     }
    33     public void httpclient_postsave(View v){
    34         name=name_view.getText().toString();
    35         phone=phone_view.getText().toString();
    36         success.setText(service.httpclient_postsave(name,phone));       
    37     }
    38     public void httpclient_getsave(View v){
    39         name=name_view.getText().toString();
    40         phone=phone_view.getText().toString();
    41         success.setText(service.httpclient_getsave(name,phone));       
    42     }
    43     
    44     
    45     
    46 }
    Cai_webActivity.java
      1 package caicai.web;
      2 
      3 import java.io.ByteArrayOutputStream;
      4 import java.io.IOException;
      5 import java.io.InputStream;
      6 import java.io.OutputStream;
      7 import java.net.HttpURLConnection;
      8 import java.net.URL;
      9 import java.net.URLEncoder;
     10 import java.util.ArrayList;
     11 import java.util.HashMap;
     12 import java.util.List;
     13 import java.util.Map;
     14 import org.apache.http.HttpResponse;
     15 import org.apache.http.NameValuePair;
     16 import org.apache.http.client.ClientProtocolException;
     17 import org.apache.http.client.HttpClient;
     18 import org.apache.http.client.entity.UrlEncodedFormEntity;
     19 import org.apache.http.client.methods.HttpGet;
     20 import org.apache.http.client.methods.HttpPost;
     21 import org.apache.http.client.utils.URLEncodedUtils;
     22 import org.apache.http.impl.client.DefaultHttpClient;
     23 import org.apache.http.message.BasicNameValuePair;
     24 import org.apache.http.util.EntityUtils;
     25 
     26 public class service {
     27 
     28     public static String get_save(String name, String phone) {
     29         /**
     30          * 出现乱码原因有2个 提交参数没有对中文编码,解决方法:使用URLEncoder.encode(xx,xx)对要提交的汉字转码
     31          * tomatCAT服务器默认采用iso859-1编码,解决方法:把PHP页面保存为UTF-8格式
     32          */
     33         String path = "http://192.168.0.117/testxml/web.php";
     34         Map<String, String> params = new HashMap<String, String>();
     35         try {
     36             params.put("name", URLEncoder.encode(name, "UTF-8"));
     37             params.put("phone", phone);
     38             return sendgetrequest(path, params);
     39         } catch (Exception e) {
     40             // TODO Auto-generated catch block
     41             e.printStackTrace();
     42         }
     43         return "提交失败";
     44     }
     45 
     46     private static String sendgetrequest(String path, Map<String, String> params)
     47             throws Exception {
     48 
     49         // path="http://192.168.0.117/testxml/web.php?name=xx&phone=xx";
     50         StringBuilder url = new StringBuilder(path);
     51         url.append("?");
     52         for (Map.Entry<String, String> entry : params.entrySet()) {
     53             url.append(entry.getKey()).append("=");
     54             url.append(entry.getValue()).append("&");
     55         }
     56         url.deleteCharAt(url.length() - 1);
     57         URL url1 = new URL(url.toString());
     58         HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
     59         conn.setConnectTimeout(5000);
     60         conn.setRequestMethod("GET");
     61         if (conn.getResponseCode() == 200) {
     62             InputStream instream = conn.getInputStream();
     63             ByteArrayOutputStream outstream = new ByteArrayOutputStream();
     64             byte[] buffer = new byte[1024];
     65             while (instream.read(buffer) != -1) {
     66                 outstream.write(buffer);
     67             }
     68             instream.close();
     69             return outstream.toString().trim();
     70 
     71         }
     72         return "连接失败";
     73     }
     74 
     75     public static String post_save(String name, String phone) {
     76         /**
     77          * 出现乱码原因有2个 提交参数没有对中文编码,解决方法:使用URLEncoder.encode(xx,xx)对要提交的汉字转码
     78          * tomatCAT服务器默认采用iso859-1编码,解决方法:把PHP页面保存为UTF-8格式
     79          */
     80         String path = "http://192.168.0.117/testxml/web.php";
     81         Map<String, String> params = new HashMap<String, String>();
     82         try {
     83             params.put("name", URLEncoder.encode(name, "UTF-8"));
     84             params.put("phone", phone);
     85             return sendpostrequest(path, params);
     86         } catch (Exception e) {
     87             // TODO Auto-generated catch block
     88             e.printStackTrace();
     89         }
     90         return "提交失败";
     91     }
     92 
     93     private static String sendpostrequest(String path,
     94             Map<String, String> params) throws Exception {
     95         // name=xx&phone=xx
     96         StringBuilder data = new StringBuilder();
     97         if (params != null && !params.isEmpty()) {
     98             for (Map.Entry<String, String> entry : params.entrySet()) {
     99                 data.append(entry.getKey()).append("=");
    100                 data.append(entry.getValue()).append("&");
    101             }
    102             data.deleteCharAt(data.length() - 1);
    103         }
    104         byte[] entiy = data.toString().getBytes(); // 生成实体数据
    105         URL url = new URL(path);
    106         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    107         conn.setReadTimeout(5000);
    108         conn.setRequestMethod("POST");
    109         conn.setDoOutput(true);// 允许对外输出数据
    110         conn.setRequestProperty("Content-Type",
    111                 "application/x-www-form-urlencoded");
    112         conn.setRequestProperty("Content-Length", String.valueOf(entiy.length));
    113         OutputStream outstream = conn.getOutputStream();
    114         outstream.write(entiy);
    115         if (conn.getResponseCode() == 200) {
    116             InputStream instream = conn.getInputStream();
    117             ByteArrayOutputStream byteoutstream = new ByteArrayOutputStream();
    118             byte[] buffer = new byte[1024];
    119             while (instream.read(buffer) != -1) {
    120                 byteoutstream.write(buffer);
    121             }
    122             instream.close();
    123             return byteoutstream.toString().trim();
    124         }
    125         return "提交失败";
    126     }
    127 
    128     public static String httpclient_postsave(String name, String phone) {
    129         /**
    130          * 出现乱码原因有2个 提交参数没有对中文编码,解决方法:使用URLEncoder.encode(xx,xx)对要提交的汉字转码
    131          * tomatCAT服务器默认采用iso859-1编码,解决方法:把PHP页面保存为UTF-8格式
    132          */
    133         String path = "http://192.168.0.117/testxml/web.php";
    134         Map<String, String> params = new HashMap<String, String>();
    135         try {
    136             params.put("name", name);
    137             params.put("phone", phone);
    138             return sendhttpclient_postrequest(path, params);
    139         } catch (Exception e) {
    140             // TODO Auto-generated catch block
    141             e.printStackTrace();
    142         }
    143         return "提交失败";
    144     }
    145 
    146     private static String sendhttpclient_postrequest(String path,Map<String, String> params) {
    147         List<NameValuePair> pairs = new ArrayList<NameValuePair>();
    148             for (Map.Entry<String, String> entry : params.entrySet()) {
    149                 pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
    150             }
    151         try {
    152             UrlEncodedFormEntity entity=new  UrlEncodedFormEntity(pairs,"UTF-8");
    153             HttpPost httpost=new HttpPost(path);
    154             httpost.setEntity(entity);
    155             HttpClient client=new DefaultHttpClient();
    156             HttpResponse response= client.execute(httpost);
    157         if(response.getStatusLine().getStatusCode()==200){
    158             
    159             return EntityUtils.toString(response.getEntity(), "utf-8");
    160         }
    161         } catch (Exception e) {
    162             // TODO Auto-generated catch block
    163             e.printStackTrace();
    164         }
    165 
    166         return null;
    167     }
    168 
    169 
    170     public static String httpclient_getsave(String name, String phone) {
    171         /**
    172          * 出现乱码原因有2个 提交参数没有对中文编码,解决方法:使用URLEncoder.encode(xx,xx)对要提交的汉字转码
    173          * tomatCAT服务器默认采用iso859-1编码,解决方法:把PHP页面保存为UTF-8格式
    174          */
    175         String path = "http://192.168.0.117/testxml/web.php";
    176         Map<String, String> params = new HashMap<String, String>();
    177         try {
    178             params.put("name", name);
    179             params.put("phone", phone);
    180             return sendhttpclient_getrequest(path, params);
    181         } catch (Exception e) {
    182             // TODO Auto-generated catch block
    183             e.printStackTrace();
    184         }
    185         return "提交失败";
    186     }
    187 
    188     private static String sendhttpclient_getrequest(String path,Map<String, String> map_params) {
    189         List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
    190             for (Map.Entry<String, String> entry : map_params.entrySet()) {
    191                 params.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
    192             }
    193         String param=URLEncodedUtils.format(params, "UTF-8");
    194         HttpGet getmethod=new HttpGet(path+"?"+param);
    195         HttpClient httpclient=new DefaultHttpClient();
    196         try {
    197             HttpResponse response=httpclient.execute(getmethod);
    198             if(response.getStatusLine().getStatusCode()==200){
    199                 return EntityUtils.toString(response.getEntity(), "utf-8");                
    200             }            
    201         } catch (ClientProtocolException e) {
    202             // TODO Auto-generated catch block
    203             e.printStackTrace();
    204         } catch (IOException e) {
    205             // TODO Auto-generated catch block
    206             e.printStackTrace();
    207         }        
    208         return null;
    209     }
    210 
    211 }
    service.java
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="fill_parent"
     4     android:layout_height="fill_parent"
     5     android:orientation="vertical" >
     6 
     7     <TextView
     8         android:layout_width="fill_parent"
     9         android:layout_height="wrap_content"
    10         android:text="姓名:" />
    11 
    12     <EditText
    13         android:id="@+id/name"
    14         android:layout_width="match_parent"
    15         android:layout_height="wrap_content" />
    16 
    17     <TextView
    18         android:layout_width="wrap_content"
    19         android:layout_height="wrap_content"
    20         android:text="电话:" />
    21 
    22     <EditText
    23         android:id="@+id/phone"
    24         android:layout_width="match_parent"
    25         android:layout_height="wrap_content" />
    26  
    27     <Button
    28         android:layout_width="wrap_content"
    29         android:layout_height="wrap_content"
    30         android:text="get提交" 
    31         android:onClick="get_save"
    32         android:layout_marginRight="30px"/>
    33     <Button
    34         android:layout_width="wrap_content"
    35         android:layout_height="wrap_content"
    36         android:text="post提交" 
    37         android:onClick="post_save"
    38         android:layout_marginRight="30px"/>
    39 
    40     <Button
    41         android:layout_width="wrap_content"
    42         android:layout_height="wrap_content"
    43         android:text="Httpclient_post提交" 
    44         android:onClick="httpclient_postsave"
    45         android:layout_marginRight="30px"/>
    46     <Button 
    47         android:layout_width="wrap_content"
    48         android:layout_height="wrap_content"
    49         android:text="Httpclient_get提交" 
    50         android:onClick="httpclient_getsave"/>
    51     <TextView
    52         android:id="@+id/success"
    53         android:layout_width="wrap_content"
    54         android:layout_height="wrap_content"
    55       />
    56 
    57 </LinearLayout>
    main.xml
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="caicai.web"
     4     android:versionCode="1"
     5     android:versionName="1.0" >
     6 
     7     <uses-sdk android:minSdkVersion="8" />
     8     <uses-permission android:name="android.permission.INTERNET"/>
     9 
    10     <application
    11         android:icon="@drawable/ic_launcher"
    12         android:label="@string/app_name" >
    13         <activity
    14             android:label="@string/app_name"
    15             android:name=".Cai_webActivity" >
    16             <intent-filter >
    17                 <action android:name="android.intent.action.MAIN" />
    18 
    19                 <category android:name="android.intent.category.LAUNCHER" />
    20             </intent-filter>
    21         </activity>
    22     </application>
    23 
    24 </manifest>
    AndroidManifest.xml
  • 相关阅读:
    结构体怎么组包发送
    开源语音代码eSpeak1.06 的移植到单片机的过程(二)之分析下speak.c 文件
    看看深圳的房价
    开源语音代码eSpeak1.06 的移植到单片机的过程(一)0之分析下espeak.c 文件
    开源语音代码eSpeak1.06 的学习入门
    利尔达模组CAT1 UIS8910指令的 TCP相关中文解释
    将博客搬至CSDN
    【原创】大叔问题定位分享(39)azkaban定期出现fullgc
    【原创】大叔经验分享(129)mac下启动MAT报错
    【原创】大数据基础之Doris(1)编译安装和启动
  • 原文地址:https://www.cnblogs.com/clarence/p/3151189.html
Copyright © 2011-2022 走看看