用Android网络通信技术,在网络上直接传输对象
来源:互联网 发布:韩国布料软件md 编辑:程序博客网 时间:2024/05/17 00:59
要做一个优秀的Android应用,使用到网络通信技术是必不可少的,很难想象一款没有网络交互的软件最终能发展得多成功。那么我们来看一下,一般Android应用程序里都是怎么实现网络交互的,这里拿一个Boook对象为例:
如上图所示,首先在手机端生成一个Book对象,里面包含书名、作者、价格等数据。为了要将这些数据发送到服务器端,我们要从Book对象中把数据取出,然后组装成XML格式的字符串。接着通过网络API,把组装好的XML字符串发送到服务器端。服务器端接到了客户端发来的XML字符串,就要对该XML进行解析。然后把解析出的数据重新组装成Book对象,之后服务器端就可以对该对象进行一系列其它的操作了。
当然XML格式的数据量比较大,现在很多Android应用为了节省流量,都改用JSON格式来传输数据了。不过不管是使用XML还是JSON,上图中描述的步骤总是少不了的。
感觉使用这种方式来传输数据,每次封装和解析XML的过程是最繁琐的,那么能不能把这最繁琐的过程绕过去呢?
如上图所示,如果可以调用网络API,直接把Book对象发送到服务器端,那么整个网络交互过程就会变得非常简单,下面我们就来看看如何实现。
新建一个Android工程,命名为ClientTest作为客户端工程。这里第一个要确定的就是待传输的对象,我们新建一个Book类,代码如下:
这个类就是一个简单的POJO,但是要注意一点,它实现了Serializable接口,如果想在网络上传输对象,那么该对象就一定要实现Serializable接口。接下来打开或新建activity_main.xml作为程序的主布局文件,加入如下代码:
这个布局里面就是包含了一个按钮,点击这个按钮就去发出网络请求。接下来打开或新建MainActivity作为程序的主Activity,其中加入如下代码:
我们可以看到,在onClick方法中处理了按扭的点击事件。这里首先new出了一个Book对象作为待传输数据,接着new出了一个URL对象,指明了服务器端的接口地址,然后对HttpURLConnection的一些可选参数进行配置。接着通过调用ObjectOutputStream的writeObject方法,将Book对象发送到服务器端,然后等服务器端返回数据,最后关闭流和连接。注意由于我们使用了网络功能,因此需要在AndroidManifest.xml中加入如下权限:
好了,目前Android端的代码已经开发完成,我们现在开始来编写服务器端代码。新建一个名为ServerTest的Web Project,要做的第一件事就在Web Project下建立一个和Android端一样的Book类。这里有个非常重要的点大家一定要注意,服务器端的Book类和Android端的Book类,包名和类名都必须相同,否则会出现类型转换异常。这里由于两个Book类的内容是完全一样的,我就不再重复贴出。
然后新建一个Java Servlet作为网络访问接口,我们重写它的doPost方法,具体代码如下:
可以看到,我们首先通过调用HttpServletRequest的getInputStream方法获取到输入流,然后将这个输入流组装成ObjectInputStream对象。接下来就很简单了,直接调用ObjectInputStream的readObject方法,将网络上传输过来的Book对象获取到,然后打印出Book中携带的数据,最后向客户端返回success。现在我们来运行一下程序,首先将ServerTest这个项目布置到服务器上,并开启服务器待命。接着在手机上打开ClientTest这个应用程序,如下图所示:
点击发送发出网络请求,可以看到服务器端打印结果如下:
而Android端打印结果如下:
由此我们可以看出,网络上进行对象传输已经成功了!不需要通过繁琐的XML封装和解析,我们也成功将Book中的数据完整地从Android端发送到了服务器端。
- 用Android网络通信技术,在网络上直接传输对象
- 巧用Android网络通信技术,在网络上直接传输对象
- Android网络通信技术(HttpClient),在网络上运用(SerializableEntity)直接传输对象
- 巧用Android网络通信技术,在网络上直接传输对象
- 巧用Android网络通信技术,在网络上直接传输对象
- 巧用Android网络通信技术,在网络上直接传输对象
- 巧用Android网络通信技术,在网络上直接传输对象
- 巧用Android网络通信技术,在网络上直接传输对象
- 巧用Android网络通信技术,在网络上直接传输对象
- 巧用Android网络通信技术,在网络上直接传输对象
- android:使用网络通信技术从客户端直接获取服务端的对象数据
- Android网络通信技术
- Android在ImageView上直接显示网络图片
- Android中网络通信技术
- 使用NIO在网络上传输文件
- 直接在网络上编辑制作图片
- 网络传输技术
- netty学习七:集成protobuf完成单个对象序列化以及在网络上传输
- 【BZOJ1087】【codevs2451】互不侵犯,状压DP
- linux svn使用总结
- Android6.0权限问题导致下载没效果
- iOS开发-block 简单使用
- markdown编辑器使用一
- 用Android网络通信技术,在网络上直接传输对象
- 视频插件VideoJS5介绍
- React-Native 原生模块(iOS)调用
- 公钥加密技术
- 快速Android开发系列通信篇之EventBus
- solr的搭建
- asp.net 操作ftp类 从网上找的先存起来以后用到了看下
- 多线程——之线程和进程
- epoll的高效实现原理