通过get和post方式向服务器发送请求

首先说一下get和post的区别

get请求方式是将提交的参数拼接在url地址后面,例如http://www.baidu.com/index.jsp?num=23&jjj=888;
但是这种形式对于那种比较隐私的参数是不适合的,而且参数的大小也是有限制的,一般是1K左右吧,对于上传文件
就不是很适合。

post请求方式是将参数放在消息体内将其发送到服务器,所以对大小没有限制,对于隐私的内容也比较合适。

在android中用get方式向服务器提交请求:

在android模拟器中访问本机中的tomcat服务器时,注意:不能写localhost,因为模拟器是一个单独的手机系统,所以要写真是的IP地址。
否则无法访问到服务器。

//要访问的服务器地址,下面的代码是要向服务器提交用户名和密码,提交时中文先要经过URLEncoder编码,因为模拟器默认的编码格式是utf-8
//而tomcat内部默认的编码格式是ISO8859-1,所以先将参数进行编码,再向服务器提交。

private String address = "http://192.168.2.101:80/server/loginServlet";

public boolean get(String username, String password) throws Exception {
username = URLEncoder.encode(username); // 中文数据需要经过URL编码
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");
//如果返回的状态码是200,则一切Ok,连接成功。
return conn.getResponseCode() == 200;
} //这种方式我平时喜欢用的方式 //获得要传递的数据
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();
} //用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);
//这是请求方式为POST
conn.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;
} //下面是我喜欢的方式 //把来传递的数据封装到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<NameValuePair>类型的对象中
List<NameValuePair> params = new ArrayList<NameValuePair>();
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();

android中用get和post方式向服务器提交请求的更多相关文章

  1. Android之使用HTTP协议的Get/Post方式向服务器提交数据

    1.Get方式 方法:通过拼接url在url后添加相应的数据,如:http://172.22.35.112:8080/videonews/GetInfoServlet?title=霍比特人&t ...

  2. android端向服务器提交请求的几种方式

    1.GET方式 其实GET方式说白了,就是拼接字符串..最后拼成的字符串的格式是: path ?  username= ....& password= ...... public boolea ...

  3. Android 使用HTTP(get和post)方式登陆服务器

    package com.wuyou.submittoserver; import android.os.Bundle; import android.support.v7.app.ActionBarA ...

  4. Android 数据存储五种方式

    1.概述 Android提供了5种方式来让用户保存持久化应用程序数据.根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存储空间等,分别是: ① 使用Shared ...

  5. Android笔记——Android中数据的存储方式(三)

    Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存 ...

  6. Android笔记——Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...

  7. android 定位的四种方式

    [原文]  开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面总结了一下网络中现有对于介绍android定位的4种方式,希望对大家有帮助: android 定 ...

  8. android 76 使用get post方式提交数据

    get方式: package com.itheima.getmethod; import java.io.InputStream; import java.net.HttpURLConnection; ...

  9. Android中用GridView实现九宫格的两种方法(转)

    Android中用GridView实现九宫格的两种方法http://blog.csdn.net/shakespeare001/article/details/7768455 1.传统办法:实现一个继承 ...

随机推荐

  1. Eclipse TestNg插件

    TestNg作为一个测试框架,也有eclipse的插件: 官网给的安装插件地址是 : For Eclipse 3.4 and above, enter http://beust.com/eclipse ...

  2. 奇怪的问题,InvalidateRect最后一个参数在XP下无效

    一直用的WIN2K系统,写的一个程序在本机正常,到XP系统的机器运行发现调整窗口大小时界面闪得厉害,程序比较大,而且这种闪烁还不好调试,因为单步调试没有闪烁效果,只能排除法找原因,最后以为找到原因了, ...

  3. 微信JSAPI支付(比较详细) 关于getRrandWCPayRequest:fail_invalid appid 错误

    原文:微信JSAPI支付(比较详细) 关于getRrandWCPayRequest:fail_invalid appid 错误 首先微信支付需注册  微信公从平台开发 和 微信支付商户平台 关于4个密 ...

  4. POJ 1330 Nearest Common Ancestors(Tarjan离线LCA)

    Description A rooted tree is a well-known data structure in computer science and engineering. An exa ...

  5. 每天一个JavaScript实例-推断图片是否载入完毕

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  6. Xamarin.forms 自定义tabview控件

    一 问题描述 forms本身ui代码是翻译为平台原生代码,forms按照xaml技术进行对android和ios两种ui模型进行公共抽象出了几种page和view,在空杯博客已经有详细介绍 http: ...

  7. CSS 控制应为Html页面高度导致抖动的问题

    在CSS中添加如下代码: html,body{ overflow-y:scroll;} html,body{ overflow:scroll; min-height:101%;} html{ over ...

  8. python 时间戳 datetime string 转换

    import datetime import time **datetime转时间戳** In [1]: now = datetime.datetime.now() In [2]: time.mkti ...

  9. [Android学习笔记]Context简单理解

    一.Context是什么?上下文对象,可以理解为一个程序的运行的环境,从中可以获取当前程序的资源:getResources,getAssets 二.常见的Context有哪些?Application ...

  10. hdu2647解题报告

    题意:有个工厂的老板给工人发奖金,每人基础都是888,工人们有自己的想法,如:a 工人想要比 b 工人的奖金高,老板想要使花的钱最少 那么就可以 给b 888,给a 889 ,但是如果在此基础上,b也 ...