Android请求服务器的两种方式--post, get的区别
2016-08-12 08:55
453 查看
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提交数据到服务器的两种方式四种方法 - 从不曾离开的只有自由和梦想! - 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 向服务器Get和Post请求的两种方式,android向服务器发送文件,自己组装协议和借助第三方开源
- android之使用get和post方式向服务器提交请求
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- android中get方式和post方式提交数据到服务器的区别
- android之使用get和post方式向服务器提交请求
- GET和POST两种请求方式的区别
- android之使用get和post方式向服务器提交请求
- 安卓开发请求服务器的两种方式GET与POST(另附验证码的倒计时)
- android中用get和post方式向服务器提交请求
- android中post和get两种方式发送请求
- android中用get和post方式向服务器提交请求
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- HTTP请求的两种方式get和post的区别
- iOS- 网络请求的两种常用方式GET & POST的区别
- Android中post和get两种方式发送请求
- http消息当中,post和get两种请求方式的区别
- Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)
- ajax与服务器传值有两种方式:get 和post的区别
- android 向serverGet和Post请求的两种方式,android向server发送文件,自己组装协议和借助第三方开源
- Ajax的get和post两种请求方式区别