转自: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. LeetCode679. 24 Game

    You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated ...

  2. [笔记] 几个前端bug的解决方案

    jQuery UI下被拖动的元素上飘 症状出现在几乎所有浏览器里.使用 1.10.x 的draggable,在滚动栏下移(即非处于页面顶部)的时候拖动draggable的元素,它会向上跳一段距离.解决 ...

  3. mvc3 RenderAction传参问题

    我在viewA中调用部分视图viewB代码如下:@{Html.RenderAction("NewsList","News",new{pageSize=13, c ...

  4. Java 中的值传递和引用传递问题

    Java 中的值传递和引用传递问题 public class Operation { int data = 50; void change(int data) { data = data + 100; ...

  5. [Codeforces995C]Leaving the Bar 瞎搞

    大致题意: 给出平面上n个向量,对于每个向量可以选择正的V或负的-V,求按照选择的向量走完,最后距离原点<=1.5*1e6的一个选择方案 非正解!!!!!!!!!! 先按距离原点距离由远到近贪心 ...

  6. 2016 湖南省省赛B题《有向无环图》

    题目链接[https://vjudge.net/problem/CSU-1804] 题意: 给出一个有向无环图,然后让你算下面的结果,count(i,j)表示i->j之间的路径条数. 题解: 根 ...

  7. 【BZOJ 1019】 1019: [SHOI2008]汉诺塔 (DP?)

    1019: [SHOI2008]汉诺塔 Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一 ...

  8. 【BZOJ 4070】【APIO 2015】雅加达的摩天楼

    http://www.lydsy.com/JudgeOnline/problem.php?id=4070 分块建图. 对每个\(P_i\)分类讨论,\(P_i>\sqrt N\)则直接连边,边数 ...

  9. [BZOJ1559][JSOI2009]密码(AC自动机)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1559 2009年的省选题虽然比起现在简单了不少,但对我来说还是很有挑战性的. 首先对于这种多串匹配问 ...

  10. 【Floyd算法】Gym - 101572I - Import Spaghetti

    题意:有向图最小环,输出方案. #include<cstdio> #include<iostream> #include<string> #include<a ...