Android学习之Http使用Post方式进行数据提交(普通数据和Json数据)

转自: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!

上一篇:JavaScript 初识Promise 对象


下一篇:Android学习笔记(36):Android的两种事件处理方式