UA自适应和手机下载

来源:互联网 发布:拓尔思 知乎 编辑:程序博客网 时间:2024/04/16 21:11

      近期在做wap下载的东西。按照以往的网站经验进行开发,由于测试环境不具备测试条件,在线上测试的时候发现,下载的时候和web版本差异很大,用流的形式来获取下载的软件时候是无法下载的。只有用链接指向该软件的绝对的路径才可以下载,很迷茫,查阅很多资料也不明白为什么io的方式无法下载?

     还有一个问题是手机的屏幕大小不同,怎么样的去自适应?使得不同的时候访问的时候都能够全屏幕来显示:

我们知道,在手机访问wap网站的时候可以根据request.getHeader方法来得到手机的相关信息,如:

     Accept-Language:zh-cn; q=0.9, en; q=0.1                                         
     Accept-Encoding:deflate,gzip                                                    
     X-Source-Id:165.148.1.22                                                         
     X-Up-Bear-Type:CDMA                                                             
     X-Wap-Profile:"http://club.coolpad.cn/uaprof/CoolPad9030.xml"                   
     Referer:http://165.148.1.22:8082/bjtcwap                                     
     Host:165.148.1.22:8082                                                       
     X-Wap-Clientid:5460030931057060                                                 
     X-Hts_user:true                                                                 
     X-Up-Calling-Line-Id:13304165052                                                
     X-Forwarded-For:10.5.161.134                                                     
     Accept:text/html,text/css,text/plain,text/vnd.wap.wml,application/vnd.wap.wml,app
     Accept-Charset:utf-8                                                            
     User-Agent:YL-COOLPAD_N900C/08.07.N900C POLARIS/5.30 CTC/1.0                    
     Cookie:JSESSIONID=CKC9MX1B1LVpHWJnt9VpwxKThctQ0BCvYWDWdpYQqvn3mq2XQHhq!1407035196

上面表述的都是在头信息中可以得到的信息,不同的手机型号获取到的头信息也不同,头信息中包含了一个User-Agent这个就是手机的型号了,我们可以根据这个型号来匹配手机的分辨率的大小。若没有获取到这个手机的型号信息,那你的手机也太山寨了,忽略了吧!

    在这个串中能够唯一标示是哪款手机的标志,其实只需要一部分如上面的User-Agent中 YL-COOLPAD_N900C 这个就可以知道是酷派的N900C,然后需要提供一个UA适配的库,没种手机型号对应的屏幕分辨率大小是多少 匹配出来后,这些数据就交给UI的来处理吧!

    还有一个问题就是,UA库现在应该有不下万余条数据吧,每一位用户访问的时候都需要取和库里的数据来匹配是不是对效率上很难保证啊?所以建议最好将库数据保存在缓存中,这样效率会提高很多。