http-post传输时网络不好可能会丢失数据吗

anabiosispe 2015-06-17 12:56:03
最近碰到了一个问题,发现有数据出错的现象,跟大家请教下问题可能出现在哪儿

基本程序流程:
1.android上io读取一个序列化的对象byte[],序列化成base64字符串
2.把base64字符串用http的post方式发送出去
3.服务器接收这个字符串,解析出来。返回响应
4.android上接收应用,提示用户。

偶发一个问题,就是服务器上接收的数据反序列化后,偶尔有出现后面部分不对的情况,都变成了0,但是android可以接收到成功的响应。
我想字节数应该是不少的,应该是值变了。网络好了,重新执行下上传,服务器上数据就对了。

以前手机在2G网络下,碰见过几次。平时偶尔会碰到。感觉网速不好时更容易碰到这现象。不过因为偶发现象,不太好重现问题,难追踪。

请问是不是存在这种可能性:网络不好时,传递一个base64的字节数组时,后面的字节可能丢失或者变为成了0?

如果不存在这种可能性,我就再找找其他原因。
...全文
1450 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
anabiosispe 2015-11-30
  • 打赏
  • 举报
回复
我后来分析可能是这么个流程,大家一起看看: 1.移动设备终端,给server发送一段数据(相较自己网速略大) 2.未能完全发送完,超时了,移动设备终端代码返回一个post失败的返回值 3.client端丢失连接的时候,server端触发接收到数据的响应,但是只接收到了一段不完全的数据。 问题可能在这 我本以为server上接收http请求,只有数据完全发送过来了,才会转给http响应类去处理。 但是实际情况,按以上分析,可能是只要client发送请求,并且断开连接时,就会把数据转发给http响应类去处理。 请大家分析看iis中,http协议上的实现,是否会在数据未完全发送,但是丢失连接时,把数据转发给http响应类去处理呢?
anabiosispe 2015-09-21
  • 打赏
  • 举报
回复
引用 3 楼 aasqs45 的回复:
我遇到的情况是,偶尔 base64一部分的编码会被修改,前半段编码正常,后半段编码就变了,并且有重复现象。。 楼主查到原因了吗?
没有找到原因啊,不过网络情况好的话,这个问题很少见,主要是网络很不好的情况下出现。
aasqs45 2015-09-20
  • 打赏
  • 举报
回复
我遇到的情况是,偶尔 base64一部分的编码会被修改,前半段编码正常,后半段编码就变了,并且有重复现象。。 楼主查到原因了吗?
anabiosispe 2015-06-17
  • 打赏
  • 举报
回复
程序是死的,网络情况好一些了,重新传一次就好了。 根据体验,似乎跟网络有关,有一次人家在2G网络下,传了4-5次都这样。大概2-300k数据
oooooooi 2015-06-17
  • 打赏
  • 举报
回复
没碰到过,看看是不是下载下来的byte直接就保存了,没有按照下载下来的字节数来保存,导致有一部分的内容成了new byte[]后面那些无效的0

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧