Android login(post和get的使用区别)
来源:互联网 发布:单片机延时1s程序 编辑:程序博客网 时间:2024/05/29 08:22
public class MainActivity extends AppCompatActivity { private EditText et_username; private EditText et_password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1 找到我们关心的控件 et_username = (EditText) findViewById(R.id.et_username); et_password = (EditText) findViewById(R.id.et_password); } //点击按钮 进行Get方式提交数据 public void click1(View v) { new Thread(){ @Override public void run() { try { //2 获取用户名和密码 String name = et_username.getText().toString().trim(); String pwd = et_password.getText().toString().trim(); //2.1 定义Get方式要提交的路径 小细节,如果提交中文,要对name和pwd进行一个Urlencode编码 String path = "http://192.168.11.73:8080/login/LoginServlet?username="+URLEncoder.encode(name, "utf-8")+"&password="+ URLEncoder.encode(pwd, "utf-8")+""; //1 创建一个url对象 参数就是网址 URL url = new URL(path); //2 获取HttpURLConnection 链接对象 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //3 设置参数 发送get请求 conn.setRequestMethod("GET"); //4 设置连接网络的超时时间 conn.setConnectTimeout(5000); //5 获取服务器返回的状态码 int code = conn.getResponseCode(); // 200 代表获取服务器资源全部成功 206 获取请求部分资源 if (code == 200) { //获取服务器返回的数据 以流的形式返回 InputStream in = conn.getInputStream(); //6.1 把inputstream转换成string String conntent = StreamTools.readStream(in); //7 把服务器返回的数据展示到toast上 不能在子线程展示toast showToast(conntent); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } //1 点击按钮 进行post方法提交数据 public void click2(View v) { new Thread(){ @Override public void run() { try { //2 获取用户名和密码 String name = et_username.getText().toString().trim(); String pwd = et_password.getText().toString().trim(); //2.1 定义Get方式要提交的路径 String data = "username="+URLEncoder.encode(name, "utf-8")+"&password="+URLEncoder.encode(pwd,"utf-8")+""; //请求体的内容 //1 ***和get方式提交数据 区别 路径不同 String path = "http://192.168.11.73:8080/login/LoginServlet"; //1 创建一个Url对象 参数就是网址 URL url = new URL(path); //2 获取HttpURLConnection 连接对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //2 ***和get方式提交数据区别 设置请求方式是post connection.setRequestMethod("POST"); // 默认请求是get 要大写 // 设置连接网络的超时时间 connection.setConnectTimeout(5000); //3 ***和get方式提交数据区别 要多设置两个请求头信息 //设置头信息 connection.setRequestProperty("content-Type", "application/x-www-form-urlencoded"); connection.setRequestProperty("content-Length",data.length()+""); //4 *** 把我们组拼好的数据提交给服务器 以流的形式提交 connection.setDoOutput(true); //设置一个标记 允许输出 connection.getOutputStream().write(data.getBytes()); //5 获取服务器返回的状态码 int code = connection.getResponseCode(); //200 代表获取服务器资源全部成功 206 请求部分资源成功 if (code == 200) { //6 获取服务器返回的数据 以流的形式返回 InputStream inputStream = connection.getInputStream(); //6.1 把inputstream 转换成 string String content = StreamTools.readStream(inputStream); //7 把服务器返回的数据展示到Toast上 不能在子线程展示Toast showToast(content); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } //封装toast方法 该toast方法执行在主线程 public void showToast(final String content) { runOnUiThread(new Runnable() { @Override public void run() { // 该方法一定是执行主线程 Toast.makeText(getApplicationContext(), content, Toast.LENGTH_SHORT).show(); } }); }}
public class StreamTools { //把一个inputstream 转换成一个string public static String readStream(InputStream in) throws Exception { //定义一个内存输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = -1; byte[] buffer = new byte[1024]; // 1kb while ((len=in.read(buffer)) != -1) { baos.write(buffer, 0, len); } in.close(); baos.close(); String content = new String(baos.toByteArray(), "gbk"); return content; }}
0 0
- Android login(post和get的使用区别)
- Android POST和GET传输的区别
- get和post使用的区别
- GET和POST的区别,何时使用POST?
- GET和POST的区别,何时使用POST?
- get 和post 的区别
- get和post的区别
- get和post的区别
- post和get的区别
- Get和Post的区别
- get和post的区别
- post和get的区别
- post和get的区别
- Post和Get的区别
- Get和Post的区别
- get和post的区别
- Post和Get的区别
- get和post的区别
- Hololens相关数据文档
- Mybatis insert 验证(2)
- 461. Hamming Distance
- HTTP协议分析
- java基础7
- Android login(post和get的使用区别)
- ruby以及sass安装、使用
- 埋点技术
- url编码的问题解决方案;转码方法不可重入,需要优雅的方案来解决,否则只能靠约定式编程。
- 窗口过程--处理点击鼠标左右键的消息(带注释)
- java JDBC数据库操作
- (POJ 3352)无向图的边双连通分量模板题 + 在一个图中最少加几条边可以使得图边双连通
- unity5 Orthographic模式相机视截体尺寸计算
- mysql 杂记(二) -- 常用SQL命令积累