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);
//这是请求方式为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;
} /* 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<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();
}

 /**
* @author Dylan
* 本类封装了Android中向web服务器提交数据的两种方式四种方法
*/
public class SubmitDataByHttpClientAndOrdinaryWay { /**
* 使用get请求以普通方式提交数据
* @param map 传递进来的数据,以map的形式进行了封装
* @param path 要求服务器servlet的地址
* @return 返回的boolean类型的参数
* @throws Exception
*/
public Boolean submitDataByDoGet(Map<String, String> map, String path) throws Exception {
// 拼凑出请求地址
StringBuilder sb = new StringBuilder(path);
sb.append("?");
for (Map.Entry<String, String> 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<String, String> 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<String, String> 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<String, String> map, String path) throws Exception {
HttpClient hc = new DefaultHttpClient();
// 请求路径
StringBuilder sb = new StringBuilder(path);
sb.append("?");
for (Map.Entry<String, String> 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<String, String> map, String path) throws Exception {
// 1. 获得一个相当于浏览器对象HttpClient,使用这个接口的实现类来创建对象,DefaultHttpClient
HttpClient hc = new DefaultHttpClient();
// DoPost方式请求的时候设置请求,关键是路径
HttpPost request = new HttpPost(path);
// 2. 为请求设置请求参数,也即是将要上传到web服务器上的参数
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
for (Map.Entry<String, String> 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;
}
}

Android请求服务器的两种方式--post, get的区别的更多相关文章

  1. cmd窗口使用sftp命令非密钥和密钥登录SFTP服务器的两种方式

    cmd窗口使用sftp命令非密钥和密钥登录SFTP服务器的两种方式 一.在Windows环境下搭建SFTP服务器可参见http://www.cnblogs.com/Kevin00/p/6341295. ...

  2. Mac Item2 SSH免密登录Linux 服务器的两种方式

    转自http://blog.csdn.net/jobschen/article/details/52823980 mac ssh登录linux服务器 的两种方式: 个人推荐第二种,zsh方式,只需要把 ...

  3. Android提交数据到服务器的两种方式四种方法

    本帖最后由 yanghe123 于 2012-6-7 09:58 编辑 Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方 ...

  4. jmeter请求参数的两种方式

    Jmeter做接口测试,Body与Parameters的选取 1.普通的post请求和上传接口,选择Parameters. 2.json和xml请求接口,选择Body. 注意: 在做接口测试时注意下请 ...

  5. Ajax请求数据的两种方式

    ajax 请求数据的两种方法,有需要的朋友可以参考下. 实现ajax 异步访问网络的方法有两个.第一个是原始的方法,第二个是利用jquery包的 原始的方法不用引入jquery包,只需在html中编写 ...

  6. Android多activity启动两种方式浅谈

    (1)第一种方式就是常见的通过intent来启动,被启动的activity需要在mainfest里面注册activity (2)第二种就是通过setContentView来启动,这里activity不 ...

  7. android 启动 service 的两种方式,及什么时候用哪个 android 什么时候用bindService

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha android  什么时候用bindService ============ 启动方式有 ...

  8. Android启动Activity的两种方式与四种启动模式

    1.在一个Activity中调用startActivity()方法 2.在一个Activity中调用startActivityRequest()方法. 重写onActivityResult方法,用来接 ...

  9. Android 编程下两种方式注册广播的区别

    常驻型广播 常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接收到,它的注册方式就是在你应用程序的AndroidManifast.xml 中进行注册,这种注册方式通常又被称 ...

随机推荐

  1. opencv png和jpg的叠加

    char *bgFile = "C:/C_Project/HandTraining/Debug/res/bg.jpg"; FILE *file = fopen(bgFile, &q ...

  2. 取数据的前N行

    用awk中csv文件中取前1000行出来,代码虽少,很容易出错 BEGIN{ FS=","; OFS=","; i=; } { i++; )exit; prin ...

  3. 顺序栈的c++实现及利用其实现括号的匹配

    #include<iostream>#include<cassert>#include<cstring>#include<string>using na ...

  4. 数据结构大二课程设计:QT实现线段树

    源码以及编译文件下载地址:http://download.csdn.net/detail/zhiyanpianyu1234/9445909#comment 加入了一些小东西,一直觉得课设是做给自己看的 ...

  5. Colorful tree

    cnbb 我被数组清零卡了一天.. 子树改色询问子树颜色数.. 先考虑颜色为x的节点对祖先答案的贡献,那么我们考虑把所有这些节点都搞出来,按dfs序排序,然后考虑每个节点a掌管的祖先是它和按dfs序的 ...

  6. UIView的一些基本方法 init、loadView、viewDidLoad、viewDidUnload、dealloc

    init方法 在init方法中实例化必要的对象(遵从LazyLoad思想) ‍init方法中初始化ViewController本身 loadView方法 当view需要被展示而它却是nil时,view ...

  7. PDF.js

    http://www.linuxidc.com/Linux/2015-06/118728.htm http://blog.csdn.net/xiangcns/article/details/42089 ...

  8. C++中Cstring、wstring 和string互相转换总结

    通过前一篇文章<C++中string,wstring,CString的基本概念和用法>,对Cstring.wstring 和string有了一个了解.string是C++提供的标准字符串操 ...

  9. poj3341

    AC自动机,用40^4 * 50 * 10的空间进行dp. 最大的难点在于hash. hash一个数列f,数列中的每一位都有一个上限g,即f[i]<=g[i]. 那么可以将该数列hash为这样一 ...

  10. perl 二维数组

    perl没有真正的二维数组,所谓的二维数组其实是把一维数组以引用的方式放到另外一个一维数组. 二维数组定义 : my @array1=([1,2],[3,4],[45,9],[66,-5]);     ...