android下實現WAP和NET的自適應

來源:互聯網
上載者:User

WAP和NET的區別:
(1) 為什麼會有兩個存取點?
  在國際上,通常只有一種GPRS接入方式,為什麼在中國會有CMWAP和CMNET兩兄弟呢?(多媒體訊息之所以單獨配置存取點是因為多媒體訊息服務需要串連專用的伺服器,在這裡不作探討。)
  其實,CMWAP 和 CMNET 只是中國移動人為劃分的兩個GPRS接入方式。前者是為手機WAP上網而設立的,後者則主要是為PC、膝上型電腦、PDA等利用GPRS上網服務。它們在 實現方式上並沒有任何差別,但因為定位不同,所以和CMNET相比,CMWAP便有了部分限制,資費上也存在差別。
  (2) 什麼是WAP?
  WAP只是一種GPRS應用模式,它與GRPS的接入方式是無關的。WAP應用採用的實現方式是“終端+WAP網關+WAP伺服器”的模式,不同於一 般Internet的“終端+伺服器”的工作模式。主要的目的是通過WAP網關完成WAP-WEB的協議轉換以達到節省網路流量和相容現有WEB應用的目 的。
  WAP網關從技術的角度講,只是一個提供DaiLi服務的主機,它不一定由網路電訊廠商提供。但據我所知,中國移動GPRS網路目前只有唯一的一個 WAP網關:10.0.0.172,有中國移動提供,用於WAP瀏覽(HTTP)服務。有一點需要注意,WAP網關和一般意義上的區域網路網關是有差別的, 標準的WAP網關僅僅實現了HTTPDaiLi的功能,並未完成路由、NAT等區域網路網關的功能。這就決定了它在應用上所受到的限制。
  (3) 中國移動對CMWAP的限制
  為了從應用中區別兩者的定位,中國移動對CMWAP作了一定的限制,主要表現在CMWAP接入時只能訪問GPRS網路內的IP(10.*.*.*), 而無法通過路由訪問Internet。(少數地區的移動網路可能不存在這一限制。)我們用CMWAP瀏覽Internet上的網頁就是通過WAP網關協議 或它提供的HTTPDaiLi服務實現的。
  說到這裡,就讓我自然而然的聯想到公司的網路,相信不少工作的朋友都有類似的體會。公司的網路在網關上不提供路由和NAT,僅僅提供一個可以訪問外網 的HTTPDaiLi。這樣,我們就無法直接使用QQ、MSN等非HTTP協議的應用軟體了(好在它們還提供的有HTTPDaiLi的串連方式)。 CMWAP也正是如此。
  (4) 適用範圍
  適用範圍才是大家最關心的問題。CMNET擁有完全的Internet訪問權,這裡就不多說了,主要讓我們來看看CMWAP。因為有了上面提到的限 制,CMWAP的適用範圍就要看WAP網關所提供的支援了。目前,中國移動的WAP網關對外只提供HTTPDaiLi協議(80和8080連接埠)和WAP 閘道器協議(9201連接埠)。
  因此,只有滿足以下兩個條件的應用才能在中國移動的CMWAP接入方式下正常工作:
  1. 應用程式的網路請求基於HTTP協議。
  2. 應用程式支援HTTPDaiLi協議或WAP網關協議。
  如何辨別一個應用程式的網路請求是否基於HTTP協議?
  這個問題還真不好回答,要完全做到這一點需要通過攔截應用程式的通訊資料包進行分析。這裡提供幾個簡單的方法給廣大菜鳥朋友:從表現上看,如果它的網 絡請求是網址(URL)的形式,那麼通常是基於HTTP協議的,如Web瀏覽器;如果它已連線的服務器連接埠是80,那麼它可能是基於HTTP協議的。如果確 實無法準確判斷,那麼請直接看下一個條件。(滿足第二個條件的應用一定是基於HTTP協議的)
  如何區別一個應用程式支援HTTPDaiLi協議還是WAP網關協議呢?
  首先看它的設定中有沒有DaiLi伺服器的選項(通常在S60上未特別說明的DaiLi都是特指HTTPDaiLi),如果有則表示它支援HTTPDaiLi協議。如果沒有,則需要按照以下步驟測試:
  在GPRS存取點設定的進階設定裡去掉DaiLi伺服器的設定項:Server Address 和 Server Port,如果應用程式可以正常工作,那麼它是基於WAP網關協議,如Java程式、S60內建的瀏覽器。如果在此狀態下不能正常工作,而恢複GPRS接 入點進階設定中的DaiLi伺服器設定後能夠正常工作,則應用程式支援HTTPDaiLi協議(DaiLi設定從系統中讀取)。如果仍不能正常工作,那麼 這個應用程式一般來說是不支援HTTPDaiLi協議或WAP網關協議的。

 

 

package com.aoran.util;

import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.URL;

/**
 *  下載器
 */
public class DownloadUtil {
 private static final String TAG = "Downloader";

 /**
  * @return InputStream 下載
  */
 public static HttpURLConnection download(String url) {
  HttpURLConnection conn = null;
  try {
   String proxyHost = android.net.Proxy.getDefaultHost();
   if (proxyHost != null) {//如果是wap方式,要加網關
    java.net.Proxy p = new java.net.Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress(
      android.net.Proxy.getDefaultHost(), android.net.Proxy.getDefaultPort()));
    conn = (HttpURLConnection) new URL(url).openConnection(p);
   } else {
    conn = (HttpURLConnection) new URL(url).openConnection();
   }
   // conn.setReadTimeout(5000);
   conn.setConnectTimeout(10000);
   conn.setRequestMethod("GET");
   conn.setRequestProperty(
     "Accept",
     "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
   conn.setRequestProperty("Accept-Language", "zh-CN");
   conn.setRequestProperty("Referer", url);
   conn.setRequestProperty("Charset", "UTF-8");
   conn.setRequestProperty(
     "User-Agent",
     "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
   conn.setRequestProperty("Connection", "Keep-Alive");
   conn.connect();
   if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    return conn;
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return null;
 }

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.