- Android智能穿戴设备开发实战详解
- 张明星
- 1071字
- 2021-03-29 11:55:53
4.4 如何高效的上传数据
“上传”的反义词是“下载”,上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上,让网络上的人都能看到。将制作好的网页、文字、图片等发布到互联网上去,以便让其他人浏览、欣赏。这一过程称为上传。在本节的内容中,将详细讲解在Android穿戴设备中上传数据的基本知识。
4.4.1 将穿戴设备中的文件上传到远程服务器
在使用穿戴设备时,可以使用拍照装置进行拍照。为了节省设备的容量,可以将照片上传到远程服务器。例如在下面的实例中,演示了在Android穿戴设备中将文件上传到远程服务器的方法。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00100001.jpg?sign=1738931268-6o23NcD0xRyaoCKgaRYyFUnAzjV4WE37-0-4f743296cba1ac7a8e89e7d1a44c5b27)
编写主程序文件chuan.java,其具体实现流程如下所示。
● 分别声明变量newName、uploadFile和actionUrl,具体代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00100002.jpg?sign=1738931268-unlwuQ6tF92VfBiyvT1usxFIgftBHJKk-0-d5604a773872be877c2e31a501944bc9)
● 通过mText1对象获取文件路径,根据mText2设置上传网址,单击按钮后调用上传方法uploadFile()。具体代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00100003.jpg?sign=1738931268-3mrsPjzC8R0I7oVUawsO4BZvhOhGP33c-0-1ec4723194e7a4b4bc1c5c87ae7d1c3a)
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00101001.jpg?sign=1738931268-Gj1B2SArfNGlwk0EilTS2A1RrvXQVBl0-0-8ddd965529ba5a9fc4239d4a07c39fec)
● 定义方法uploadFile()将文件上传至Server,具体代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00101002.jpg?sign=1738931268-DqcTeuJ3KDnNkST7jMyc1U2YJlyUS9ev-0-03914dca6067737a1af651322328f5aa)
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00102001.jpg?sign=1738931268-RriAccURa5dD0mqkrZLrb4d1SW3YRMuN-0-b10e589ed9e52f8e011f21f0140ab8e4)
● 定义方法showDialog(String mess)来显示提示对话框,具体代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00102002.jpg?sign=1738931268-zPHVfhjgIZCVVjs4F8ugkXwCgnwM6i2c-0-27af7f11c83a808f112ba06f15a527e9)
执行后单击“上传”按钮可以将指定的文件上传到服务器,如图4-8所示。
4.4.2 使用GET方式上传数据
在Andorid系统中可以通过GET方式或POST方式上传数据,两者的具体区别如下所示。
● GET上传的数据一般是很小的并且安全性能不高的数据。
● POST上传的数据适用于数据量大,数据类型复杂,数据安全性能要求高的地方。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00102003.jpg?sign=1738931268-1xz8M8XDvSSHhIBbAN9nNLwCQO56XT3R-0-2158e962d0fce57f51acfaa43a6f3a0c)
图4-8 上传到服务器
在Android穿戴设备开发应用中,采用GET方式向服务器传递数据的基本步骤如下所示。
(1)利用Map集合对数据进行获取并进行数据处理,例如:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00103001.jpg?sign=1738931268-NFtNA0YjaTstochGbsuanQbiWNS2TWYY-0-1932620cf9cfe3231f600cc1a5fb5d55)
(2)新建一个StringBuilder对象。例如:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00103002.jpg?sign=1738931268-7wx5bgVI8pplEZyXWdiX9UAEOnzj14jx-0-5ead3fbe7c26766a777e42f3929ab5e0)
(3)新建一个HttpURLConnection的URL对象,打开连接并传递服务器的path。例如:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00103003.jpg?sign=1738931268-4iqNhvmVid9ADITG3sHa03AlYAAm6hoj-0-f8d8ff7b2e6707c229b6d9b79d870b2f)
(4)设置超时和连接的方式。例如:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00103004.jpg?sign=1738931268-R7GKRPSCOErK0tMn0O5I3lO9gHbRiAun-0-a76392bf133db53f05b67f5de1fcc120)
在接下来的内容中将通过一个具体实例的实现过程介绍在Android穿戴设备中采用GET方式向服务器传递数据的基本方法。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00103005.jpg?sign=1738931268-FVKgJVgNHPCDYFqb7MKCscgZuSDW5Rvd-0-3be7732114419117c3941616642973d6)
本实例的具体实现流程如下所示。
(1)打开Eclipse,新建一个名为“ServerForGETMethod”的Web工程,并自动生成配置文件web.xml。
(2)创建一个名为ServletForGETMethod的Servlet,功能是接收并处理通过GET方式上传的数据。实现文件ServletForGETMethod.java的具体代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00103006.jpg?sign=1738931268-WJHQ0zmhRw3qb5h8h1kjAATUln2KSIwP-0-29f263fe2cce8b493da260c5c7f42b7a)
在上述代码中,为了避免出现中文乱码的问题,特意实现了ISO8854-1和UTF-8转换处理。请读者再看看下面的代码,很好的解决了乱码的问题。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00104001.jpg?sign=1738931268-lvi4nyRjZen68NwRMlTbIPvzBYGXEQXb-0-330961020a489818e0280f9bc73985d9)
由此可见,在使用get方式传递数据时,需要使用如下所示的代码声明当前页的字符集。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00104002.jpg?sign=1738931268-0P0tUYkcMTmLf0xjhOfZSMLASX6zw0UX-0-b2b89798d3ecbb3112ed720bfd9f7f8a)
(3)在配置文件web.xml中配置ServletForGETMethod,具体实现代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00104003.jpg?sign=1738931268-bUbqPmcccQy6GvCIveYD4mKyOW6COtvu-0-c71a16dbefb86e4e74efd1fa9181435d)
(4)打开Eclipse,新建一个名为“UserInformation”的Android工程。然后编写界面布局文件main.xml。
(5)编写业务类的实现文件UserInformationService.java,主要实现代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00104004.jpg?sign=1738931268-Xiz847FnO1qufoShozXxweHhO6SAL3Wj-0-e771b8df758f6f3bdcc7d579f4fdd1a9)
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00105001.jpg?sign=1738931268-LNYDJ3zynXLrQAXOnqWoaJX0TfUnecRv-0-afb3494e2ead90b1d5a7995caf31d882)
(6)编写配置文件AndroidManifest.xml,申明网络访问权限,主要代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00105002.jpg?sign=1738931268-nona87P0cmGaZnKW7VXCmUQzl8TpaMbF-0-5ca01a4faca1463e63e080bfb35c23b1)
到此为止,整个实例已讲解完毕,执行后的效果如图4-9所示。输入用户名和年龄后单击“save”按钮,会将输入的数据上传至服务器。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00106001.jpg?sign=1738931268-q4DP5DzWvEYYHCriEpe33kksubAC8ogM-0-216b0d18b1af7a05a04ef428dc78cc62)
图4-9 执行效果