android中用get和post方式向服务器提交请求疯狂之桥新浪博客
http://blog.sina.com.cn/s/blog_a46817ff01017yxt.html
Android提交数据到服务器的两种方式四种方法 - 从不曾离开的只有自由和梦想! - ITeye技术网站
http://keeponmoving.iteye.com/blog/1528472
android端向服务器提交请求的几种方式 - Android移动开发技术文章_手机开发 - 红黑联盟
http://www.2cto.com/kf/201309/242510.html


// android中向服务器提交请求的两种方式和四种方法

private String addr = "http://192.168.2.101:80/serlet/loginServlet";/* 1. 在android中用get方式向服务器提交请求 */public boolean get(String username, String password) throws Exception {username = URLEncoder.encode(username);password = URLEncoder.encode(password);String params = "Username = " + username + "&password = " + password;//将参数拼接在URl地址后面URL url = new URL(address + "?" + params);//通过url地址打开连接HttpURLConnection conn = (HttpURLConnection) url.openConnection();//设置超时时间conn.setConnectTimeout(3000);//设置请求方式conn.setRequestMethod("GET");return conn.getResponseCode() == 200;}/* 2. HttpGet方式向服务器提交请求 --HttpClient *///获得要传递的数据String username = et1.getText().toString();String password = et2.getText().toString();// 创建HttpGet对象HttpGet request = new HttpGet(url +"name="+username+"&password="+password);// 使用execute方法发送HTTP GET请求,并返回HttpResponse对象// DefaultHttpClient为Http客户端管理类,负责发送请HttpResponse response = httpClient.execute(request);// 判断请求响应状态码,状态码为200表示服务端成功响应了客户端的请求if (response.getStatusLine().getStatusCode() == 200) {     // 使用getEntity方法获得返回结果     String data = EntityUtils.toString(response.getEntity(),"gbk");     //获得Message对象     Message msg = handler.obtainMessage(1);    //创建Bundle对象     Bundle bundle = new Bundle();     //用mes传递数据     msg.setData(bundle);    //开启Message对象     msg.sendToTarget();}/* 3. post 方式向服务器提交请求 */public boolean post(String username, String password)     throws Exception {username = URLEncoder.encode(username); // 中文数据需要经过URL编码password = URLEncoder.encode(password);String params = "username=" + username + "&password=" + password;byte[] data = params.getBytes();URL url = new URL(address);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(3000);//这是请求方式为POSTconn.setRequestMethod("POST");//设置post请求必要的请求头// 请求头, 必须设置conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 注意是字节长度, 不是字符长度conn.setRequestProperty("Content-Length", data.length + ""); conn.setDoOutput(true); // 准备写出conn.getOutputStream().write(data); // 写出数据return conn.getResponseCode() == 200;}/* 4. HttpPost方式向服务器提交请求 --HttpClient */把来传递的数据封装到user对象中User user = new User();user.setUserName(et1.getText().toString());user.setUserPass(et2.getText().toString());//创建Post对象HttpPost request = new HttpPost("http://10.0.2.2:8080/system/Servlet");// 将需要传递的参数封装到List类型的对象中List params = new ArrayList();params.add(new BasicNameValuePair("username", user.getUserName()));params.add(new BasicNameValuePair("password", user.getUserPass()));// 将封装参数的对象存入request中,并设置编码方式request.setEntity(new UrlEncodedFormEntity(params,  HTTP.UTF_8));// DefaultHttpClient为Http客户端管理类,负责发送请求和接受响应HttpResponse response = defaultHttpClient.execute(request);// 判断请求响应状态码,状态码为200表示服务端成功响应了客户端的请求if (response.getStatusLine().getStatusCode() == 200) {     // 使用getEntity方法获得返回结果     String data = EntityUtils.toString(response.getEntity(),"gdk");     //创建bundle对象     Bundle bundle = new Bundle();     //用bundle对象来封装data数据     bundle.putString("data", data);     //创建Message对象     Message mes = handler.obtainMessage(1);     //存储bundle数据     mes.setData(bundle);     mes.sendToTarget();}

/** * @author Dylan * 本类封装了Android中向web服务器提交数据的两种方式四种方法 */public class SubmitDataByHttpClientAndOrdinaryWay {/** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */public Boolean submitDataByDoGet(Map map, String path) throws Exception {    // 拼凑出请求地址    StringBuilder sb = new StringBuilder(path);    sb.append("?");    for (Map.Entry entry : map.entrySet()) {        sb.append(entry.getKey()).append("=").append(entry.getValue());        sb.append("&");    }    sb.deleteCharAt(sb.length() - 1);    String str = sb.toString();    System.out.println(str);    URL Url = new URL(str);    HttpURLConnection HttpConn = (HttpURLConnection) Url.openConnection();    HttpConn.setRequestMethod("GET");    HttpConn.setReadTimeout(5000);    // GET方式的请求不用设置什么DoOutPut()之类的吗?    if (HttpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {        return true;    }    return false;}/** * 普通方式的DoPost请求提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */public Boolean submitDataByDoPost(Map map, String path) throws Exception {    // 注意Post地址中是不带参数的,所以newURL的时候要注意不能加上后面的参数    URL Url = new URL(path);    // Post方式提交的时候参数和URL是分开提交的,参数形式是这样子的:name=y&age=6    StringBuilder sb = new StringBuilder();    // sb.append("?");    for (Map.Entry entry : map.entrySet()) {        sb.append(entry.getKey()).append("=").append(entry.getValue());        sb.append("&");    }    sb.deleteCharAt(sb.length() - 1);    String str = sb.toString();    HttpURLConnection HttpConn = (HttpURLConnection) Url.openConnection();    HttpConn.setRequestMethod("POST");    HttpConn.setReadTimeout(5000);    HttpConn.setDoOutput(true);    HttpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");    HttpConn.setRequestProperty("Content-Length", String.valueOf(str.getBytes().length));    OutputStream os = HttpConn.getOutputStream();    os.write(str.getBytes());    if (HttpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {        return true;    }    return false;}/** * 以HttpClient的DoGet方式向服务器发送请数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */public Boolean submitDataByHttpClientDoGet(Map map, String path) throws Exception {    HttpClient hc = new DefaultHttpClient();    // 请求路径    StringBuilder sb = new StringBuilder(path);    sb.append("?");    for (Map.Entry entry : map.entrySet()) {        sb.append(entry.getKey()).append("=").append(entry.getValue());        sb.append("&");    }    sb.deleteCharAt(sb.length() - 1);    String str = sb.toString();    System.out.println(str);    HttpGet request = new HttpGet(sb.toString());    HttpResponse response = hc.execute(request);    if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {        return true;    }    return false;}/** * 以HttpClient的DoPost方式提交数据到服务器 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */public Boolean submintDataByHttpClientDoPost(Map map, String path) throws Exception {    // 1. 获得一个相当于浏览器对象HttpClient,使用这个接口的实现类来创建对象,DefaultHttpClient    HttpClient hc = new DefaultHttpClient();    // DoPost方式请求的时候设置请求,关键是路径    HttpPost request = new HttpPost(path);    // 2. 为请求设置请求参数,也即是将要上传到web服务器上的参数    List parameters = new ArrayList();    for (Map.Entry entry : map.entrySet()) {        NameValuePair nameValuePairs = new BasicNameValuePair(entry.getKey(), entry.getValue());        parameters.add(nameValuePairs);    }    // 请求实体HttpEntity也是一个接口,我们用它的实现类UrlEncodedFormEntity来创建对象,注意后面一个String类型的参数是用来指定编码的    HttpEntity entity = new UrlEncodedFormEntity(parameters, "UTF-8");    request.setEntity(entity);    // 3. 执行请求    HttpResponse response = hc.execute(request);    // 4. 通过返回码来判断请求成功与否    if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {        return true;    }    return false;}}

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. android-HttpClient和HttpURLConnection判断网络连接
  4. 7.2 android volley超时重试设置
  5. Android使用JSONObject和GSON方法解析JSON格式数据
  6. Android应用中动态更改主题的实现
  7. Android数据库ContentProvider封装原理
  8. 详解 Android(安卓)的 Activity 组件——笔记
  9. Android(安卓)ListView和ListAdapter

随机推荐

  1. 《Android 开发艺术探索》笔记——(3)View
  2. Android高性能编码三:数据结构和算法优化
  3. 编写一个基本的Android​应用程序
  4. Android平台显示单位px和dip以及sp指的是
  5. Android属性动画应用超简单代码打造酷炫
  6. Android ADK开发包示例开源代码
  7. Linux/Android——输入子系统input_event
  8. android 获取 内外存储设备路径疑问
  9. 19、从头学Android之Android的数据存储--
  10. 如何适应android碎片化的屏幕