本帖最后由 yanghe123 于 2012-6-7 09:58 编辑

Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方式向服务器提交数据的方法。
代码比较简单,这里不去过多的阐述,直接看代码。

  1. /**
  2. * @author Dylan 本类封装了Android中向web服务器提交数据的两种方式四种方法
  3. */
  4. public class SubmitDataByHttpClientAndOrdinaryWay {
  5. **
  6. * 使用get请求以普通方式提交数据
  7. *
  8. * @param map
  9. *            传递进来的数据,以map的形式进行了封装
  10. * @param path
  11. *            要求服务器servlet的地址
  12. * @return 返回的boolean类型的参数
  13. * @throws Exception
  14. */
  15. public Boolean submitDataByDoGet(Map<String, String> map, String path)
  16. throws Exception {
  17. // 拼凑出请求地址
  18. StringBuilder sb = new StringBuilder(path);
  19. sb.append("?");
  20. for (Map.Entry<String, String> entry : map.entrySet()) {
  21. sb.append(entry.getKey()).append("=").append(entry.getValue());
  22. sb.append("&");
  23. }
  24. sb.deleteCharAt(sb.length() - 1);
  25. String str = sb.toString();
  26. System.out.println(str);
  27. URL Url = new URL(str);
  28. HttpURLConnection HttpConn = (HttpURLConnection) Url.openConnection();
  29. HttpConn.setRequestMethod("GET");
  30. HttpConn.setReadTimeout(5000);
  31. // GET方式的请求不用设置什么DoOutPut()之类的吗?
  32. if (HttpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
  33. return true;
  34. }
  35. return false;
  36. }
  37. /**
  38. * 普通方式的DoPost请求提交数据
  39. *
  40. * @param map
  41. *            传递进来的数据,以map的形式进行了封装
  42. * @param path
  43. *            要求服务器servlet的地址
  44. * @return 返回的boolean类型的参数
  45. * @throws Exception
  46. */
  47. public Boolean submitDataByDoPost(Map<String, String> map, String path) throws Exception {
  48. // 注意Post地址中是不带参数的,所以newURL的时候要注意不能加上后面的参数
  49. URL Url = new URL(path);
  50. // Post方式提交的时候参数和URL是分开提交的,参数形式是这样子的:name=y&age=6
  51. StringBuilder sb = new StringBuilder();
  52. // sb.append("?");
  53. for (Map.Entry<String, String> entry : map.entrySet()) {
  54. sb.append(entry.getKey()).append("=").append(entry.getValue());
  55. sb.append("&");
  56. }
  57. sb.deleteCharAt(sb.length() - 1);
  58. String str = sb.toString();[/font][/size]
  59. HttpURLConnection HttpConn = (HttpURLConnection) Url.openConnection();
  60. HttpConn.setRequestMethod("POST");
  61. HttpConn.setReadTimeout(5000);
  62. HttpConn.setDoOutput(true);
  63. HttpConn.setRequestProperty("Content-Type",
  64. "application/x-www-form-urlencoded");
  65. HttpConn.setRequestProperty("Content-Length",
  66. String.valueOf(str.getBytes().length));
  67. OutputStream os = HttpConn.getOutputStream();
  68. os.write(str.getBytes());
  69. if (HttpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
  70. return true;
  71. }
  72. return false;
  73. }
  74. /**
  75. * 以HttpClient的DoGet方式向服务器发送请数据
  76. *
  77. * @param map
  78. *            传递进来的数据,以map的形式进行了封装
  79. * @param path
  80. *            要求服务器servlet的地址
  81. * @return 返回的boolean类型的参数
  82. * @throws Exception
  83. */
  84. public Boolean submitDataByHttpClientDoGet(Map<String, String> map,
  85. String path) throws Exception {
  86. HttpClient hc = new DefaultHttpClient();
  87. // 请求路径
  88. StringBuilder sb = new StringBuilder(path);
  89. sb.append("?");
  90. for (Map.Entry<String, String> entry : map.entrySet()) {
  91. sb.append(entry.getKey()).append("=").append(entry.getValue());
  92. sb.append("&");
  93. }
  94. sb.deleteCharAt(sb.length() - 1);
  95. String str = sb.toString();
  96. System.out.println(str);
  97. HttpGet request = new HttpGet(sb.toString());[/font][/size]
  98. HttpResponse response = hc.execute(request);
  99. if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {
  100. return true;
  101. }
  102. return false;
  103. }

复制代码

  1. /**
  2. * 以HttpClient的DoPost方式提交数据到服务器
  3. *
  4. * @param map
  5. *            传递进来的数据,以map的形式进行了封装
  6. * @param path
  7. *            要求服务器servlet的地址
  8. * @return 返回的boolean类型的参数
  9. * @throws Exception
  10. */
  11. public Boolean submintDataByHttpClientDoPost(Map<String, String> map, String path) throws Exception {
  12. // 1. 获得一个相当于浏览器对象HttpClient,使用这个接口的实现类来创建对象,DefaultHttpClient
  13. HttpClient hc = new DefaultHttpClient();
  14. // DoPost方式请求的时候设置请求,关键是路径
  15. HttpPost request = new HttpPost(path);
  16. // 2. 为请求设置请求参数,也即是将要上传到web服务器上的参数
  17. List<NameValuePair> parameters = new ArrayList<NameValuePair>();
  18. for (Map.Entry<String, String> entry : map.entrySet()) {
  19. NameValuePair nameValuePairs = new BasicNameValuePair(
  20. entry.getKey(), entry.getValue());
  21. parameters.add(nameValuePairs);
  22. }
  23. // 请求实体HttpEntity也是一个接口,我们用它的实现类UrlEncodedFormEntity来创建对象,注意后面一个String类型的参数是用来指定编码的
  24. HttpEntity entity = new UrlEncodedFormEntity(parameters, "UTF-8");
  25. request.setEntity(entity);
  26. // 3. 执行请求
  27. HttpResponse response = hc.execute(request);
  28. // 4. 通过返回码来判断请求成功与否
  29. if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {
  30. return true;
  31. }
  32. return false;
  33. }
  34. }

复制代码

Android提交数据到服务器的两种方式四种方法的更多相关文章

  1. Android -- 提交数据到服务器,Get Post方式, 异步Http框架提交

    1. 发送请求到服务器有几种方式 (1)HttpURLConnection (2)Httpclient 同步框架 (3)AsyncHttpClient 异步框架 (https://github.com ...

  2. Android 采用HttpClient提交数据到服务器

    在前几篇文章中<Android 采用get方式提交数据到服务器><Android 采用post方式提交数据到服务器>介绍了android的两种提交数据到服务器的方法 本文继续介 ...

  3. Android提交数据到JavaWeb服务器实现登录

    之前学习Android提交数据到php服务器没有成功,在看了两三个星期的视频之后,现在终于实现了与服务器的交互.虽然完成的不是PHP端的,但是在这个过程还是学到了不少东西的.现在我先来展示一下我的成果 ...

  4. Android 采用post方式提交数据到服务器

    接着上篇<Android 采用get方式提交数据到服务器>,本文来实现采用post方式提交数据到服务器 首先对比一下get方式和post方式: 修改布局: <LinearLayout ...

  5. Android 采用get方式提交数据到服务器

    首先搭建模拟web 服务器,新建动态web项目,servlet代码如下: package com.wuyudong.web; import java.io.IOException; import ja ...

  6. HTTP/HTTPS GET&POST两种方式的实现方法

    关于GET及POST方式的区别请参照前面文章:http://www.cnblogs.com/hunterCecil/p/5698604.html http://www.cnblogs.com/hunt ...

  7. linux服务器之间传输文件的四种方式

    linux文件传输在内网渗透中至关重要,所以我在此总结一下几种Linux服务器之间传输文件的四种方式 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法]scp就是se ...

  8. Android(java)学习笔记210:采用post请求提交数据到服务器(qq登录案例)

    1.POST请求:  数据是以流的方式写给服务器 优点:(1)比较安全 (2)长度不限制 缺点:编写代码比较麻烦   2.我们首先在电脑模拟下POST请求访问服务器的场景: 我们修改之前编写的logi ...

  9. Android(java)学习笔记209:采用get请求提交数据到服务器(qq登录案例)

    1.GET请求:    组拼url的路径,把提交的数据拼装url的后面,提交给服务器. 缺点:(1)安全性(Android下提交数据组拼隐藏在代码中,不存在安全问题)  (2)长度有限不能超过4K(h ...

随机推荐

  1. 07 Go 1.7 Release Notes

    Go 1.7 Release Notes Introduction to Go 1.7 Changes to the language Ports Known Issues Tools Assembl ...

  2. Android WebView 详解

    相关API 相关类介绍 WebResourceRequest 添加于API21,封装了一个Web资源的请求信息,包含:请求地址,请求方法,请求头,是否主框架,是否用户点击,是否重定向 WebResou ...

  3. 输出联系变化的数字seq

    主要作用:输出联系变化的数字格式:Seq 分割符号 开始 间隔 结束开始默认是1,间隔默认是1,分隔符默认回车一位是结束,两位首末,三位首间隔末,没有四位,开始可以是负数主要参数:-f 指定格式打印- ...

  4. java.io.StreamCorruptedException: invalid stream header: EFBFBDEF 问题解决

    错误方式 @Test public void testDeserializeTest() throws IOException, ClassNotFoundException { ByteArrayO ...

  5. Linux Centos安装Jenkins

    Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上.同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和 ...

  6. 【LOJ】#2181. 「SDOI2015」排序

    题解 还以为是啥毒瘤题 然后是个搜索题 复杂度算起来挺大 然后跑起来就连0.1ms不到= = 就是从大到小进行每种操作,搜出来一种操作就乘上一个操作数的阶乘就行 如果现在进行的操作操作\(2^i\)那 ...

  7. linux nohup screen注解

    一.nohup  & 二.screen

  8. php 会话控制(Session会话控制)

    php的session会话是通过唯一的会话ID来驱动的,会话ID是一个加密的随机数字,由php生成,在会话的生命周期中都会保存在客户端.客户端保存数据的地方只有cookie,所以php的会话ID一般保 ...

  9. 003.RAID管理

    一 查看RAID组信息 [root@kauai ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Aug 29 22: ...

  10. Java异常类层次结构图

    1. 分类图镇楼: 2.运行时异常与非运行时异常区别: Java 提供了两类主要的异常 :runtime exception 和 checked exception. 2.1 checked exce ...