android客户端访问webservice的流量问题

这两天通过webservice来远程获取数据,刚开始没有注意到流量的问题,后来一试用,短短5天的时间花费了500M流量,这种流量在pc端还好

在移动端那简直就无法忍受,后来分析发现主要是以下问题:

1、webservice 的访问次数过多。

2、数据的重复获取

3、webservice 由于是基于soap协议,而soap协议是基于XML标签的,所以会有大量的冗余数据。

解决方法:

一、尽量减少webservice 的访问次数

现在很多应用因为业务的关系无法使用第三方推送,又不想自己搭建一个推送系统,故使用定时访问webservice的方法来获取所需数据,我们的

应用就是这样的,故根据自己的业务需要设计定时访问策略,如:在访问时间上做优化,如:晚上就不做访问或者少做访问,如果这一次获取到

数据,那么下一次访问的时间就自动延长,如果这一次没有获取到数据,那么下一次访问的时间就自动缩短,然后设置好最小与最大访问频率。

访问次数的减少能够根本的减少流量。

二、减少数据的重复获取

对所获取的数据进行排序标记,比如这一次获取到数据A的标号为5,那么下一次访问的时候就将这个5带上去,那么5以下的数据服务器就不再

重新返回。这样也能较为可观的减少流量。

三、对webservice数据进行压缩

这是最后一步优化的方法,如果以上两种方法都无法满足要求的话,那么这种方法才应该被想到。由于soap协议的性质,导致其传输数据的效率

很低,也就是如果要传输10个字节的数据,如果我们使用传统的socket方式来传输数据,可能只需要传输15个字节左右,但是使用soap协议则可

能需要100个字节。这就导致大量的流量被浪费。下面我给大家看一张测试服务器上的抓包图


我的IP为192.168.1.175,服务器的IP为192.168.1.231,刚开始我发送一个登录数据给服务器,然后服务器给我一个回复,我的登录数据为

username=4414000084password=123456,我们可以看到,当我将这两个数据发送给上去的时候,HTTP/XML 的包的大小为721个字节,然

后服务器给我回复了一个result=0或者1,可以看见花费了71个字节,传递一个用户名和密码总共也就不到50个字节(用户名和密码还需要进行标

记,故不能仅计算那串数字)却花费了721个字节,服务器回复的有效信息也就10个字节左右,却花费了71个字节,这样的有效性简直是太低了。

故想办法把这些发送的数据进行压缩也能够节省流量。

压缩办法:在客户端将数据分装成soap协议数据,然后压缩,服务器端接受到后进行解压,然后进行soap解析。这种方法我没有进行尝试,因

为仅客户端做出改变是没有作用的,必须服务器端进行配合。但是我比较好奇的是,如果需要这样进行操作的话,那还不如直接使用socket进行

数据访问,访问一次就断开,也不弄什么心跳长连接,这样应该也不会消耗多少流量,但是可能会加重服务器的压力。

以上就是android客户端访问webservice流量问题的解决方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值