转自:http://blog.csdn.net/wulianghuan/article/details/8626551

我们知道通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的长度也有限制,与Get方式类似,http-post参数也是被URL编码的,然而它的变量名和变量值不作为URL的一部分被传送,而是放在实际的HTTP请求消息内部被传送。

可以通过如下的代码设置POST提交方式参数:

  1. HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
  2. urlConnection.setConnectTimeout(3000);
  3. urlConnection.setRequestMethod("POST"); //以post请求方式提交
  4. urlConnection.setDoInput(true);     //读取数据
  5. urlConnection.setDoOutput(true);    //向服务器写数据
  6. //获取上传信息的大小和长度
  7. byte[] myData = stringBuilder.toString().getBytes();
  8. //设置请求体的类型是文本类型,表示当前提交的是文本数据
  9. urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  10. urlConnection.setRequestProperty("Content-Length", String.valueOf(myData.length));

这里使用一个案例来看一下如何使用post方式提交数据到服务器:

首先我们创建一个java project,只要创建一个类就行,我们创建一个HttpUtils.java类,

【代码如下】:

我们再创建一个服务端工程,一个web project,这里创建一个myhttp的工程,先给它创建一个servlet,用来接收参数访问。

创建的servlet配置如下:

  1. <servlet>
  2. <description>This is the description of my J2EE component</description>
  3. <display-name>This is the display name of my J2EE component</display-name>
  4. <servlet-name>LoginAction</servlet-name>
  5. <servlet-class>com.login.manager.LoginAction</servlet-class>
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>LoginAction</servlet-name>
  9. <url-pattern>/servlet/LoginAction</url-pattern>
  10. </servlet-mapping>

建立的LoginAction.java类继承HttpServlet:

  1. package com.login.manager;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. public class LoginAction extends HttpServlet {
  9. /**
  10. * Constructor of the object.
  11. */
  12. public LoginAction() {
  13. super();
  14. }
  15. /**
  16. * Destruction of the servlet. <br>
  17. */
  18. public void destroy() {
  19. super.destroy(); // Just puts "destroy" string in log
  20. // Put your code here
  21. }
  22. /**
  23. * The doGet method of the servlet. <br>
  24. *
  25. * This method is called when a form has its tag value method equals to get.
  26. *
  27. * @param request the request send by the client to the server
  28. * @param response the response send by the server to the client
  29. * @throws ServletException if an error occurred
  30. * @throws IOException if an error occurred
  31. */
  32. public void doGet(HttpServletRequest request, HttpServletResponse response)
  33. throws ServletException, IOException {
  34. this.doPost(request, response);
  35. }
  36. /**
  37. * The doPost method of the servlet. <br>
  38. *
  39. * This method is called when a form has its tag value method equals to post.
  40. *
  41. * @param request the request send by the client to the server
  42. * @param response the response send by the server to the client
  43. * @throws ServletException if an error occurred
  44. * @throws IOException if an error occurred
  45. */
  46. public void doPost(HttpServletRequest request, HttpServletResponse response)
  47. throws ServletException, IOException {
  48. response.setContentType("text/html;charset=utf-8");
  49. request.setCharacterEncoding("utf-8");
  50. response.setCharacterEncoding("utf-8");
  51. PrintWriter out = response.getWriter();
  52. String userName = request.getParameter("username");
  53. String passWord = request.getParameter("password");
  54. String json = request.getParameter("json");
  55. System.out.println("userName:"+userName);
  56. System.out.println("passWord:"+passWord);
  57. System.out.println("json:"+json);
  58. if(userName.equals("admin") && passWord.equals("123456")){
  59. out.print("login successful!");
  60. }else{
  61. out.print("login failed");
  62. }
  63. out.flush();
  64. out.close();
  65. }
  66. /**
  67. * Initialization of the servlet. <br>
  68. *
  69. * @throws ServletException if an error occurs
  70. */
  71. public void init() throws ServletException {
  72. // Put your code here
  73. }
  74. }

我们运行java project,控制台输出如下:

>>>login successful!

Android学习之Http使用Post方式进行数据提交(普通数据和Json数据)的更多相关文章

  1. 【Android】Handler的应用(一):从服务器端加载JSON数据

    最终目的 以JSON的形式,将数据存入服务器端. 在Android中,以Handler加载显示大批量文字. 在此以加载金庸小说<天龙八部(新修版)>为例(2580480 字节). 以tom ...

  2. 【Android学习】四种布局方式

    一.LinearLayout 线性布局,即一行展开或者一列展开,也可以嵌套,需要注意的属性如下: android:orentation  //对齐方式 二.FrameLayout 帧布局,即一层层叠起 ...

  3. Android学习笔记④——页面的布局方式

    FrameLayout(帧布局) 这个布局的特点是简单的默认把每一个视图组件都放在边框内且放在左上角,即使添加多个视图组件,他们也都是重叠在左上角,新的视图会遮挡住旧的视图.可以根据gravity来改 ...

  4. Android学习之Service(1)--->Started方式

    界面退出后进程程序还在运行,不会被杀死,如音乐播发器.后台下载等 注:本文只讨论Started方式 main.xml代码分析 <?xml version="1.0" enco ...

  5. 我有一壶酒 Android学习之Service(1)--->BinderService方式

    本文只讨论扩展Binder类 创建一个Binder.xml <?xml version="1.0" encoding="utf-8"?> <L ...

  6. android 学习随笔十五(Activity的生命周期与摧毁时返回数据 )

    1.Activity的生命周期 onCreate:创建时调用 onStart:在屏幕上可见,但是还没有获得焦点 onResume:可见并且获得焦点 onPause:可见,但是失去焦点 onStop:不 ...

  7. android 学习随笔十(网络:get、post提交数据)

    1.get public class Tools { public static String getTextFromStream(InputStream is){ byte[] b = new by ...

  8. 学习Java 采取令牌的方式避免重复提交

    重复提交原因 从提交页面到成功页面的跳转一般采用视图定位,由于视图定位是在服务端跳转的,如果用户在点击提交之后再次刷新页面,会导致重复提交,数据库的数据会有重复. 采用令牌措施 1.在转账展示页面生成 ...

  9. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

随机推荐

  1. mac pro上安装docker

    1.进入一下地址进行下载docker https://download.docker.com/mac/stable/Docker.dmg 进入后进行下载后进行安装 2.将其拖动到Appliaction ...

  2. Weex 版扫雷游戏开发

    扫雷是一个喜闻乐见的小游戏,今天在看 Weex 文档的过程中,无意中发现用 Weex 完全可以开发一个扫雷出来.当然这个扫雷和 Windows 那个有一点差距,不过麻雀虽小五脏俱全,随机布雷.自动挖雷 ...

  3. day1作业二:多级菜单

        作业二:多级菜单 1.三级菜单 2.可以次选择进入各子菜单 3.所需新知识点:列表.字典 4.打印b回到上一层 5.打印q退出循环 流程图如下: readme: (1)存储三级菜单的字典;设置 ...

  4. 《构建高性能 Web站点》笔记

    书名:构建高性能Web站点 出版社: 电子工业出版社 ISBN:9787121170935 一  绪论 等待的时间: (1) 数据在网络上的传输时间 (2) 站点服务器处理请求并生成回应数据的时间 ( ...

  5. Centos bash: make: command not found

    一般出现这个bash: make: command not found提示,是因为安装系统的时候使用的是最小化mini安装,系统没有安装make.vim等常用命令,直接yum安装下即可: yum -y ...

  6. SQL Server Connection Pooling (ADO.NET)

    SQL Server Connection Pooling (ADO.NET) Connecting to a database server typically consists of severa ...

  7. ubuntu 防火墙关闭的80端口,开启方法

    #关闭防火墙 /etc/init.d/iptables stopservice iptables stop # 停止服务#查看防火墙信息/etc/init.d/iptables status #开放端 ...

  8. 【C#】字段总结

    前沿: 字段(field)是一种数据成员,其中容纳了一个值类型的实例或者一个引用类型的引用. 正文: CLR支持类型(静态)字段和实例(非静态)字段.对于类型字段,用于容纳字段数据的动态内存是在类型对 ...

  9. 解决引入keras后出现的Using TensorFlow backend的错误

    在引入头文件之后,加入 import os os.environ['KERAS_BACKEND']='tensorflow' 就可以完美解决这个问题

  10. SSMdemo:租房管理系统

    使用ssm框架整合,oracle数据库 框架: Spring SpringMVC MyBatis 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastj ...