向服务器提交数据有两种方式,post和get。两者的区别主要有三点,安全性、长度限制、数据结构。其中get请求安全性相比较而言较差,数据长度受浏览器地址栏限制,没有方法体。两种都是较为重要的数据提交方式。现简单介绍一下三种post和get的提交方式。无论是哪种方法实现post和get,get 的访问路径都要携带数据,而post提交是把数据放在方法体中。 普通方法实现get/post提交: 严格遵照Http协议进行数据传输。在安卓开发环境下,由于主线程不能进行网络访问,因此需要在开启一个子线程向服务器提交数据。为了更加直观的观察数据,可以在程序屏幕上显示服务器反馈信息。又由于子线程无法更 在Android应用开发中,向服务器提交数据是常见的需求,主要通过HTTP协议的两种请求方法:POST和GET。这两种方法各有特点,适用于不同的场景。 GET请求是将数据附加到URL路径中,以问号(?)分隔参数和值,如`http://example.com/data?key1=value1&key2=value2`。这种方式简洁明了,但因为数据直接暴露在地址栏,所以安全性较低,不适合传输敏感信息。此外,GET请求受到浏览器地址栏长度的限制,通常不超过2048个字符。 POST请求则将数据封装在请求体中,不会显示在URL上,因此安全性相对较高,适合处理大量数据或敏感信息。POST请求没有明显的长度限制,理论上可以发送大量数据。不过,POST请求的处理相比GET可能稍复杂一些,服务器端需要解析请求体来获取数据。 在Android中,由于主线程不允许执行耗时操作,包括网络请求,所以通常会在子线程中执行这些任务。以下是一个简单的POST请求示例: ```java public void load(View view) { final String qq = et_qq.getText().toString().trim(); final String pwd = et_pwd.getText().toString().trim(); if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)) { Toast.makeText(MainActivity.this, "qq号或密码为空", Toast.LENGTH_SHORT).show(); return; } final String path = "http://192.168.1.114:8080/qqload/qqload"; new Thread() { public void run() { try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); // 设置允许输出 conn.setUseCaches(false); // 不使用缓存 // 写入数据到请求体 OutputStream os = conn.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); writer.write("qq=" + qq + "&pwd=" + pwd); writer.flush(); writer.close(); int code = conn.getResponseCode(); if (code == 200) { InputStream is = conn.getInputStream(); String result = StreamTools.ReadStream(is); // 使用Handler更新UI Message msg = Message.obtain(); msg.what = SUCCESS; msg.obj = result; handler.sendMessage(msg); } else { Message msg = Message.obtain(); msg.what = ERROR1; handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = ERROR2; handler.sendMessage(msg); } } }.start(); } ``` 在上述代码中,我们首先创建了一个子线程来执行网络请求,然后设置HTTP连接为POST方法,并打开输出流来写入数据。当请求成功时,通过Handler将服务器返回的信息更新到UI。注意,Handler是用来在子线程和主线程之间传递消息的工具,确保在主线程中更新UI,遵循Android的UI操作规则。 对于GET请求,其代码会更简洁,因为数据直接包含在URL中,无需写入请求体: ```java public void load(View view) { final String qq = et_qq.getText().toString().trim(); final String pwd = et_pwd.getText().toString().trim(); if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(pwd)) { Toast.makeText(MainActivity.this, "qq号或密码为空", Toast.LENGTH_SHORT).show(); return; } final String path = "http://192.168.1.114:8080/qqload/qqload?qq=" + qq + "&pwd=" + pwd; new Thread() { public void run() { try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setReadTimeout(5000); int code = conn.getResponseCode(); if (code == 200) { InputStream is = conn.getInputStream(); String result = StreamTools.ReadStream(is); Message msg = Message.obtain(); msg.what = SUCCESS; msg.obj = result; handler.sendMessage(msg); } else { Message msg = Message.obtain(); msg.what = ERROR1; handler.sendMessage(msg); } } catch (Exception e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = ERROR2; handler.sendMessage(msg); } } }.start(); } ``` 总结来说,Android应用中,GET和POST请求主要用于与服务器交互,传输数据。GET请求简单但受限,适用于获取小量非敏感信息;POST请求安全且灵活,适用于发送大量或敏感数据。在实际开发中,要根据具体需求选择合适的方法,并注意线程安全和UI更新规则。
- 粉丝: 3
- 资源: 908
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 永磁同步电机(pmsm)模型预测控制(MPC)matla b simulink仿真模型,有PI矢量控制,直接预测控制(有限集模型预测控制)(这个其中包括做了单矢量和双矢量或者可以成为三矢量的有限集预测
- Google Chrome浏览器ChromeDriver驱动下载(Chrome版本:132.0.6834.84)win64
- Google Chrome浏览器ChromeDriver驱动下载(Chrome版本:132.0.6834.84)win32
- 从0到1搭建推荐系统 - 数据驱动的算法与架构设计(带数据集)
- 汇川H3U标准程序,程序有本体脉冲控制的三轴定位,有总线控制的汇川伺服定位,轴点动,回零,相对定位绝对定位,程序结构清晰,分模块控制,是工控者学习的好案例
- 从0到1搭建推荐系统 - 数据驱动的算法与架构设计(带数据集)
- S7-200Smart 恒压供水程序样例+485通讯样例
- 基于simulink三自由度汽车操纵模型(侧向,侧倾,横摆)带数据参数,有详细公式文档 具有特殊性,发出不 哦(高于或等于MATLAB 2016a版本的都可打开模型)
- C++编写,qt框架,windows串口调试助手,多线程运行,性能好,效率高,不丢数据,保证代码质量
- 从0到1搭建推荐系统 - 数据驱动的算法与架构设计(带数据集)
- . NET C# WPF图书管理系统源码 .net C# WPF图书管理系统源码 自己开发,纯源码 主要技术:C#、基于wpf开发、sql server数据库的增删改查 源码特点:代码完整规范,采
- 西门子Smart200和台达ⅤFD一M系列变频器通讯程序 Smart和三菱E700或D7O0变频器通讯程序,程序带注释,包括接线图纸,变频器参数设置,全都有,拿到即可以用,节约开发时间
- ofdm 水声通信 qpsk fpga
- COMSOL手性超材料文献模拟模型 计算左右旋圆偏振下的吸收、反射、透射率(材料参数未与文献一致 趋势吻合)
- 昆仑通态MCGS与3台力士乐VFC-x610变频器通讯程序 实现昆仑通态触摸屏与3台力士乐VFC-x610变频器通讯,程序稳定可靠 器件:昆仑通态TPC7062KD触摸屏,3台力士乐VFC-x610变
- Unity3d 基于UniStorm插件和xx天气API实现实时天气系统源码工程
评论0