<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-348  評論-598  文章-0  trackbacks-0

    OPHONE獲得USER AGENT[權威解決方案]

    論壇里有幾個人發了一些代碼,如何獲得UA,但是自己都實踐過了一遍,一個都不行。最近做OPHONE的項目,跟移動終端的人打了不少交道,了解了一些相關知識,這里把權威的解決方案發布出來。 我不是方法的發明者,但是我是方法的實踐者。順便也在這里感謝相關的人。 

    原理: 

    OPHONE的UA存放位置: 
    1)OPHONE 1.0和1.5     存放于/opl/etc/properties.xml 
    1)OPHONE 2.0     存放于/opl/etc/product_properties.xml 

    大家可以通過下面的步驟自己查看: 
    1),連上手機,或者模擬器。 
    2),輸入 adb shell 
    3),輸入 cd opl 
    4),輸入 cd etc 
    5),輸入 cat properties.xml (或者cat product_properties.xml 【OPHONE2.0】) 

    結果如下圖: 
     

    以上就是properties.xml的內容,接下來就是獲得這個UA,加到自己的聯網請求里去。 
    我自己寫了一個,適用于目前3個版本的OPHONE。 

    AndroidPlatform.java 

    package com.***.****; 

    import java.io.ByteArrayOutputStream; 
    import java.io.File; 
    import java.io.FileInputStream; 


    public class AndroidPlatform  { 
            
            public static final String KEYSTRING_USER_AGENT = "user_agent_key"; 
            
            public static String getUAFromProperties() 
            { 
                    try { 
                    FileInputStream is = getPropertyStream(); 
                    ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); 
                            byte buf[] = new byte[1024]; 
                            for(int k = 0; -1 != (k = is.read(buf));) 
                       bytearrayoutputstream.write(buf, 0, k); 
                            
                            String fileString = new String(bytearrayoutputstream.toByteArray(), "UTF-8"); 
                            
                            return getProperties(KEYSTRING_USER_AGENT, fileString); 
                            
                    //System.out.println("IS FILE Android Platform  " + bytearrayoutputstream.size() +  "  "+()); 
              
                    } catch (Exception e) { 
                            // TODO: handle exception 
                            
                            System.out.println("IS FILE erororo"); 
                            e.printStackTrace(); 
                    } 
                    return null; 
            } 
            
            
            
            public static FileInputStream getPropertyStream() 
            { 
                    try { 
                            
                            File property = new java.io.File("/opl/etc/properties.xml"); 
                            if(property.exists()) 
                            { 
                                    return new FileInputStream(new java.io.File("/opl/etc/properties.xml")); 
                            } 
                            else 
                            { 
                                    property = new java.io.File("/opl/etc/product_properties.xml"); 
                                    if(property.exists()) 
                                    { 
                                            return new FileInputStream(new java.io.File("/opl/etc/product_properties.xml")); 
                                    } 
                                    else 
                                    { 
                                            return null; 
                                    } 
                            } 
              
                    } catch (Exception e) { 
                            // TODO: handle exception 
                            e.printStackTrace(); 
                    } 
                    return null; 
            } 
            
            
            public static String getProperties(String key, String content) 
            { 
                    String STARTKEY = "<"+key+">"; 
                    String ENDKEY = "</"+key+">"; 
                    content = content.replace("\r", ""); 
                    content = content.replace("\n", ""); 
                    
                    int startIndex = content.indexOf(STARTKEY) + STARTKEY.length(); 
                    int endIndex = content.indexOf(ENDKEY); 
                    if(startIndex > -1 && endIndex > -1) 
                    { 
                            return content.substring(startIndex, endIndex); 
                    } 
                    else 
                    return null; 
            } 

            


    聯網請求時,加入UA即可,這樣就做到了自動適配了。具體如下: 

    private int CountMoneyCMWAPNEWWAY(String urlstr) 
      { 

              String strHead = ""; 
              try{ 
                      if(!GameLet._self.isNetworkCMWAPAvailable()) 
                      { 
                              GameLet._self.ActiveNetWorkByMode("wap"); 
                              Thread.sleep(5000); 
                      } 

                  int splashIndex = urlstr.indexOf("/", 7); 

                  String hosturl = urlstr.substring(7, splashIndex); 
                  String hostfile = urlstr.substring(splashIndex); 
                  
                 

                  HttpHost proxy = new HttpHost( "10.0.0.172", 80, "http"); 
                  HttpHost target = new HttpHost(hosturl, 80, "http");         
              
                  HttpParams httpParams = new BasicHttpParams(); 
                  HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000); 
                  HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000); 
                  HttpConnectionParams.setSocketBufferSize(httpParams, 8192); 
                  HttpClientParams.setRedirecting(httpParams, true); 
              
                  String userAgent =  AndroidPlatform.getUAFromProperties(); 
              
                  HttpProtocolParams.setUserAgent(httpParams, userAgent); 
                  DefaultHttpClient httpclient = new DefaultHttpClient(httpParams); 

                  httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 
                    
                  HttpGet req = new HttpGet(hostfile); 
               
                  HttpResponse rsp = httpclient.execute(target, req); 
                 
                  HttpEntity entity = rsp.getEntity(); 
                  
                  InputStream inputstream = entity.getContent(); 
                  ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); 
                  byte abyte1[] = new byte[1024]; 
                  for(int k = 0; -1 != (k = inputstream.read(abyte1));) 
                     bytearrayoutputstream.write(abyte1, 0, k); 
                  
                  strHead = new String(bytearrayoutputstream.toByteArray(), "UTF-8"); 
                  
                  httpclient.getConnectionManager().shutdown();   
                  
                  } 
                  catch (Exception e)        { 
                          return 2; 
                  } 
                   
                if(strHead.indexOf("status=1301") > -1 || strHead.indexOf("status=1300") > -1) 
                { 
                      return 1; 
                } 
                else 
                { 
                      return 0; 
                } 
           
      }


    ---------------------------------------------------------
    專注移動開發

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2010-08-24 15:17 TiGERTiAN 閱讀(709) 評論(0)  編輯  收藏 所屬分類: Android
    主站蜘蛛池模板: 18观看免费永久视频| 嫩草成人永久免费观看| 青青草国产免费久久久91| 亚洲一区在线视频| 日本在线高清免费爱做网站| 亚洲福利一区二区精品秒拍| 亚洲一区免费在线观看| 亚洲国产成人精品青青草原| 日韩欧美一区二区三区免费观看| 亚洲日日做天天做日日谢| 免费无码成人AV片在线在线播放| 久久精品国产亚洲AV天海翼| 亚洲欧洲中文日韩久久AV乱码 | 亚洲伊人精品综合在合线| 亚洲第一成年免费网站| 亚洲精品国产高清在线观看| mm1313亚洲精品无码又大又粗| 黄色短视频免费看| 久久青青草原亚洲av无码app| 国产在线观看片a免费观看| 国产亚洲欧美在线观看| 国产亚洲精品无码拍拍拍色欲| 久久香蕉国产线看免费| 亚洲av永久无码精品天堂久久| 天天摸夜夜摸成人免费视频| 深夜免费在线视频| 亚洲一区二区影院| 白白国产永久免费视频| 中文字幕在线成人免费看| 亚洲天堂电影在线观看| 四只虎免费永久观看| 精品无码一级毛片免费视频观看 | 免费精品国偷自产在线在线 | 亚洲AV成人潮喷综合网| 欧洲人成在线免费| 亚洲精品无码久久久久YW| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲成人一级电影| 亚洲成人一区二区| 最近免费mv在线电影| 青青草97国产精品免费观看|