没有分了,问个简单一点的问题?关于http下载
我想下载一个3gp文件。我在模拟器中下载的可以正常播放,可是为什么在手机上下载的确实下面这段东西呢:
<?xml version= "1.0 " encoding= "UTF-8 "?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN " "http://www.wapforum.org/DTD/wml_1.1.xml "> <wml> <head> <meta http-equiv= "Cache-Control " content= "max-age=0 " forua= "true " /> <meta http-equiv= "Cache-Control " content= "no-cache " forua= "true " /> <meta http-equiv= "Cache-Control " content= "must-revalidate " forua= "true " /> </head> <card title= " "> <p> 中国移动提醒您:继续浏览网页将产生GPRS通信费,确认请点击 <br/> <a href= 'http://124.42.30.147/vv.3gp?t=47134 '> http://124.42.30.147/vv.3gp </a> <br/> 您可以选择取消本提醒服务,取消后再登陆本网站将不会收到该提示页面。 <br/> <a href= "http://218.200.249.249/usercancelservlet?fr=0&ou=http%3A%2F%2F124.42.30.147%2Fvv.3gp "> 取消提醒 </a> <br/> 如需查询GPRS通信费标准,请拨打10086,包月客户仍按原套餐资费标准收费。 </p> </card> </wml>
听一个朋友说需要根移动合作,到底要怎么样作呢?
[解决办法]
二次连接的意思是,就是发现第一次数据不对后,再重新把这次http请求再次发送一次。
Http的连接处理逻辑不变。只是在你收到上面那个提示页面wml数据后(需要你自己写个函数判断收到的是个提示页面而非应用数据),你再次用上一次发送的URL,active一个新的http请求。这样得到的就是正确数据。
简单来说,你用浏览器打开一个url请求,第一次会得到这个提示页面,但你可以不用选择页面里面的取消提示选项,而直接再次输入这个URL地址,就可以得到正确的应用页面了。
这就是所谓的二次连接,仅仅向一个url执行两次http请求,就可以绕开移动提示页面了。
但不是每次都需要这样,只是当你收到的是提示页面的信息时,才需要程序再次发送请求。一般只提示一次,以后就不会提示了,直到你的connect关闭。
saltedfish