芯方式

使用中国移动CMWAP,直接续传失败的原因

0
阅读(889)

[DESCRIPTION]
使用中国移动CMWAP上网,并下载一个文件,在正在下载的过程中,退出浏览器:
-->再次进入浏览器-->直接进入download list,点击续传-->续传失败。
-->再次进入浏览器-->先浏览某个网页-->再进入download list,点击续传-->续传成功
[SOLUTION]
失败的case:退出浏览器-->再次进入浏览器-->直接进入download list,点击续传-->续传失败。
我们可以看到此时交互的数据如下:
GET http://mmsc.arimatech.com.cn:82/file/video/3GP/h263-bfmx.3gp HTTP/1.1
Host: mmsc.arimatech.com.cn:82
If-Range: "0f870bbf0c51:dfb"
Range: bytes=42941-
。。。。
HTTP/1.1 200 OK
Content-Type: text/vnd.wap.wml; charset=UTF-8
Content-Length: 530
。。。。
此时,server返回来的是一个要求我们跳转的连接。但是在续传的case中,DL Agent没有办法处理这种跳转。在
http response handler中,检测 status 与content-length不满足要求,变直接return出来,并提示用户续传失败
,而不会去解析这个wml 文件获取这个跳转地址并重新请求。DL Agent app没有这个能力。
成功的case:退出浏览器-->再次进入浏览器-->先浏览器一个网页-->进入download list,点击续传-->续传成功
如下是先请求进入某个网页时的http数据:
GET http://mmsc.arimatech.com.cn:82/ HTTP/1.1
Host: mmsc.arimatech.com.cn:82
。。。。
HTTP/1.1 200 OK
Content-Type: application/vnd.wap.wmlc; charset=UTF-8
Content-Length: 135
..j.Cache-Control..l.Z..
.max-age=0.W..Z..
.no-cache.W..Z..
.must-revalidate.W...U.card.6..>..J..mmsc.arimatech.com.cn:82/?t=33929.....
GET http://mmsc.arimatech.com.cn:82/?t=33929 HTTP/1.1
Host: mmsc.arimatech.com.cn:82
。。。。
我们可以看到,这时server端也是先返回一个跳转。而浏览器有处理这种跳转的能力,因此会重新向服务器申请要求被
跳转的URL。这个时候再次去半导体社区做续传时,交互的数据如下:
GET http://mmsc.arimatech.com.cn:82/file/video/3GP/h263-bfmx.3gp HTTP/1.1
Host: mmsc.arimatech.com.cn:82
If-Range: "0f870bbf0c51:dfb"
Range: bytes=27581-
。。。。
HTTP/1.1 206 Partial content
Content-Type: video/3gpp
Content-Length: 261671
。。。。
Content-Range: bytes 27581-289251/289252
以上是使用CMWAP上网的情况,进入浏览器后,第一次请求连接时,server会返回一个跳转连接给client端,要求
client使用这个链接重新联网。这个与使用了代理有关,应该是网关的行为。而使用CMNET时,由于没有通过代理
,server端则直接返回给我们所需要的内容。因此不会发生这类续传失败的问题。而对于当前MTK平台的DL Agent的设
计,是肯定没有处理这种跳转的case的