接着上篇《Android 采用get方式提交数据到服务器》,本文来实现采用post方式提交数据到服务器

首先对比一下get方式和post方式:

修改布局:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. tools:context=".MainActivity" >
  7.  
  8. <EditText
  9. android:id="@+id/et_name"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:hint="请输入用户名"
  13. android:inputType="text" />
  14.  
  15. <EditText
  16. android:id="@+id/et_pwd"
  17. android:layout_width="match_parent"
  18. android:layout_height="wrap_content"
  19. android:hint="请输入密码"
  20. android:inputType="textPassword" />
  21. <Button
  22. android:onClick="LoginByGet"
  23. android:layout_width="match_parent"
  24. android:layout_height="wrap_content"
  25. android:text="GET方式登录"
  26. />
  27. <Button
  28. android:onClick="LoginByPost"
  29. android:layout_width="match_parent"
  30. android:layout_height="wrap_content"
  31. android:text="POST方式登录"
  32. />
  33.  
  34. </LinearLayout>

添加代码:

  1. package com.wuyudong.loginclient;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.InputStream;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7.  
  8. import android.os.Build;
  9. import android.os.Bundle;
  10. import android.os.StrictMode;
  11. import android.annotation.SuppressLint;
  12. import android.annotation.TargetApi;
  13. import android.app.Activity;
  14. import android.text.TextUtils;
  15. import android.view.View;
  16. import android.widget.EditText;
  17. import android.widget.Toast;
  18.  
  19. public class MainActivity extends Activity {
  20. private EditText et_name;
  21. private EditText et_pwd;
  22.  
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.activity_main);
  26.  
  27. et_name = (EditText) findViewById(R.id.et_name);
  28. et_pwd = (EditText) findViewById(R.id.et_pwd);
  29.  
  30. StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
  31. .permitAll().build();
  32. StrictMode.setThreadPolicy(policy);
  33.  
  34. }
  35.  
  36. public void LoginByGet(View view) {
  37.  
  38. String name = et_name.getText().toString().trim();
  39. String pwd = et_pwd.getText().toString().trim();
  40.  
  41. if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
  42. Toast.makeText(this, "用户名密码不能为空", 0).show();
  43. } else {
  44. // 模拟http请求,提交数据到服务器
  45. String path = "http://169.254.168.71:8080/web/LoginServlet?username="
  46. + name + "&password=" + pwd;
  47. try {
  48. URL url = new URL(path);
  49. // 2.建立一个http连接
  50. HttpURLConnection conn = (HttpURLConnection) url
  51. .openConnection();
  52. // 3.设置一些请求方式
  53. conn.setRequestMethod("GET");// 注意GET单词字幕一定要大写
  54. conn.setRequestProperty(
  55. "User-Agent",
  56. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
  57.  
  58. int code = conn.getResponseCode(); // 服务器的响应码 200 OK //404 页面找不到
  59. // // 503服务器内部错误
  60. if (code == 200) {
  61. InputStream is = conn.getInputStream();
  62. // 把is的内容转换为字符串
  63. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  64. byte[] buffer = new byte[1024];
  65. int len = -1;
  66. while ((len = is.read(buffer)) != -1) {
  67. bos.write(buffer, 0, len);
  68. }
  69. String result = new String(bos.toByteArray());
  70. is.close();
  71. Toast.makeText(this, result, 0).show();
  72.  
  73. } else {
  74. Toast.makeText(this, "请求失败,失败原因: " + code, 0).show();
  75. }
  76.  
  77. } catch (Exception e) {
  78. e.printStackTrace();
  79. Toast.makeText(this, "请求失败,请检查logcat日志控制台", 0).show();
  80. }
  81.  
  82. }
  83.  
  84. }
  85.  
  86. /**
  87. * 采用post的方式提交数据到服务器
  88. *
  89. * @param view
  90. */
  91. public void LoginByPost(View view) {
  92. String name = et_name.getText().toString().trim();
  93. String pwd = et_pwd.getText().toString().trim();
  94.  
  95. if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) {
  96. Toast.makeText(this, "用户名密码不能为空", 0).show();
  97. } else {
  98. try {
  99. String path = "http://169.254.168.71:8080/web/LoginServlet?username="
  100. + name + "&password=" + pwd;
  101. // 1.定义请求url
  102. URL url = new URL(path);
  103. // 2.建立一个http的连接
  104. HttpURLConnection conn = (HttpURLConnection) url
  105. .openConnection();
  106. // 3.设置一些请求的参数
  107. conn.setRequestMethod("POST");
  108. conn.setRequestProperty(
  109. "User-Agent",
  110. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
  111. conn.setRequestProperty("Content-Type",
  112. "application/x-www-form-urlencoded");
  113. String data = "username=" + name + "&password=" + pwd;
  114. conn.setRequestProperty("Content-Length", data.length() + "");
  115. conn.setConnectTimeout(5000);//设置连接超时时间
  116. conn.setReadTimeout(5000); //设置读取的超时时间
  117.  
  118. // 4.一定要记得设置 把数据以流的方式写给服务器
  119. conn.setDoOutput(true); // 设置要向服务器写数据
  120. conn.getOutputStream().write(data.getBytes());
  121.  
  122. int code = conn.getResponseCode(); // 服务器的响应码 200 OK //404 页面找不到
  123. // // 503服务器内部错误
  124. if (code == 200) {
  125. InputStream is = conn.getInputStream();
  126. // 把is的内容转换为字符串
  127. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  128. byte[] buffer = new byte[1024];
  129. int len = -1;
  130. while ((len = is.read(buffer)) != -1) {
  131. bos.write(buffer, 0, len);
  132. }
  133. String result = new String(bos.toByteArray());
  134. is.close();
  135. Toast.makeText(this, result, 0).show();
  136.  
  137. } else {
  138. Toast.makeText(this, "请求失败,失败原因: " + code, 0).show();
  139. }
  140.  
  141. } catch (Exception e) {
  142. e.printStackTrace();
  143. Toast.makeText(this, "请求失败,请检查logcat日志控制台", 0).show();
  144. }
  145. }
  146.  
  147. }
  148. }

Android 采用post方式提交数据到服务器的更多相关文章

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

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

  2. 采用get方式提交数据到服务器实例

    GetDemo项目目录 一.编写StreamTools.java /** * */ package com.hyzhou.getdemo.utiils; import java.io.ByteArra ...

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

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

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

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

  5. Android 使用Post方式提交数据

    在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...

  6. Android 使用Post方式提交数据(登录)

    在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持. 在HTTP通信中使用最多的就是GET和POS ...

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

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

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

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

  9. httpclient方式提交数据到服务器

    get方式: //使用HttpClient请求服务器将用户密码发送服务器验证 try{ String path = "http://192.168.13.83:8080/xuexi/serv ...

随机推荐

  1. javascript必知必会:面象对象编程

    面象对象编程技术的核心理念:封装.继承.多态:在一些主流的高级编程语言中,比如:C#,VB.NET,JAVA,PHP等都是很容易实现的,而如果要在javascript中实现面象对象编程,可就不那么直接 ...

  2. MySQL5.7(5.6)GTID环境下恢复从库思(qi)路(yin)方(ji)法(qiao)

      要讨论如何恢复从库,我们得先来了解如下一些概念: GTID_EXECUTED:它是一组包含已经记录在二进制日志文件中的事务集合 GTID_PURGED:它是一组包含已经从二进制日志删除掉的事务集合 ...

  3. 我读过的最好的epoll讲解--转自”知乎“

    首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作,通过read ...

  4. Asp.Net WebForm和MVC同样优秀!

    不是说MVC不好,而是WebForm并没有那么不堪,和Mvc同样优秀.对说WebForm缺点多的,表示不服,求指教,虽然本人有些见解可能比较浅薄. 看过很多文章和书籍,都会拿MVC模式和WebForm ...

  5. jQuery 3.0正式发布

    jQuery 基金会刚刚发布了该 JavaScript 框架的 3.0 版本,并且首次抛弃了对老旧的 IE 浏览器的支持.jQuery 3.0 的工作始于 2014 年 10 月,其最初目标是在 2. ...

  6. 介绍开源的.net通信框架NetworkComms框架 源码分析(六)SendReceiveOptions

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  7. 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸

    [源码下载] 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸 作者:webabcd 介绍背水一战 Windows 10 之 UI 窗口全屏 窗口尺寸 示例1.窗口全屏UI/F ...

  8. Windows下查看JDK是否安装以及安装路径

    查看JDK是否已经安装,可以在cmd窗口里输入java -version,如果没有提示出错,就表示已经安装. 查看JDK的安装路径,可以输入java -verbose,会返回很多信息,其中就包含了JD ...

  9. springmvc中RequestMapping的解析

    在研究源码的时候,我们应该从最高层来看,所以我们先看这个接口的定义: package org.springframework.web.servlet; import javax.servlet.htt ...

  10. Python 3 利用 subprocess 实现管道( pipe )交互操作读/写通信

    这里我们用Windows下的shell来举例: from subprocess import * #因为是举例,就全部导入了 为了方便你理解,我们用一个很简单的一段代码来说明: 可以看见我们利用Pop ...