1. 程式人生 > >wap開發語言

wap開發語言

前二天因工作需要,上頭要求做一個wap版的網站,到網上學習了一天,弄了個beta版出來(http://wap.luckty.com 功能很一般),整理幾點經驗如下:

2.找一款好的wap瀏覽器,普通瀏覽器並不能直接瀏覽wap網站,所以得找一個模擬器,以下是幾款常用的:

a.opera 9以上版本(但好象不支援wmlscript) b.openwave c.winwap d.m3gate (個人感覺這個最好用,不過這玩意兒現在升級了,好象不太好使了,建議如果要用這個,找舊版本的測試)

3.搭建測試環境(以IIS為例) wap網站跟常規網站的不同在於,需要增加幾個mime型別的支援: 在iis的站點mime型別裡,把.wml,.wmls,.wmlc,.wmlsc,.wbmp

這五類字尾新增進去就可以了

4.vs.net2008的配置 vs.net2005本來可以直接建立"Mobile WebForm"的,但到了vs2008反而將過一功能去掉了,所以需要手動下載"移動web窗體的模板",詳細可參考 http://www.cnblogs.com/3stones/archive/2009/01/05/1351969.html 一文

5.為方便測試,還需要強制讓vs輸出wml,在web.config中把下面這節內容放在<system.web>之後

 <browserCaps>       <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>       <use var="HTTP_USER_AGENT"/>       preferredRenderingType = "wml11"       preferredRenderingMime = "text/vnd.wap.wml"       preferredImageMime = "image/vnd.wap.wbmp"     </browserCaps>

另外,因為wap開發中,很多常規控制元件都不能用,所以只能用一些最基本的移動控制元件,除此之外,其它開發跟常規webForm無異

要注意的地方:

1.傳遞多個引數時,不能用xxx.aspx?a=1&b=2 ,而要改成xxx.aspx?a=1&amp;b=2 ,否則在opera上無法解析

2.如果在MobilePage對應的aspx中,直接用<%="你的內容"%>,最終執行時將得不到任何輸出,正確的辦法是建立一個Mobile User Control,在控制元件裡就可以這樣用了,然後再把該控制元件放到頁面裡

3.Mobile控制元件中,沒有Repeater控制元件,只能用Mobile:List控制元件來代替,但是這個東西,我個人覺得並不好用,還不如在後臺直接生成字串,然後利用2中的辦法,放到自定義控制元件裡輸出

4.幾乎每個Mobile控制元件,都有一個BreakAfter屬性,預設為true,即每個控制元件後面會自動新增<br />標記,如果您不需要換行,把這個屬性設定為false

首先你在做WAP首先要了解的事情:WML和XHTML 手機瀏覽器支援的格式,也就是所謂的WAP 1.0和WAP 2.0的區別。WAP 1.0支援的頁面效果比較一般沒有WAP2.0豐富。

  然後就是瀏覽器的準備了:

    OPera這個瀏覽器可以瀏覽WAP網站,缺點:&nbsp; 空格會原樣輸出看不到手機的真實效果,看到滿篇的&nbsp;的確讓人不爽。對WML格式要求嚴格.列在href &  要進行轉譯為&amp;不然瀏覽器會報錯。

   firefox 火狐的強大源於外掛的強烈支援。當然要火狐能支援WAP網站,就必須支援在工具新增元件

新增wmlbrower就可以瀏覽WAP網站了。

還有最後一個介紹的就是WINWAP這個對語法要求沒有opera 嚴格,對中文支援不好,尤其在中文提交的時候伺服器端要麼獲取亂碼要麼直接是空字元。這個wml中文亂碼,在以後會寫出自己的心得來。

----------------------------------------------------

我做wap開發有一年多了,從最初的wap1.2到wap2.0,中國聯通到中國移動,期間遇到問題林林總總,積累了不少經驗,為讓後來者少走一些彎路,特把自己的一些心得體會寫出來供大家參考。

  Wap程式可以用 Asp,Jsp,Php,Python 等開發,如果你不嫌麻煩,用C++也行。

  由於筆者以前做web開發用的是Asp,所以開發平臺選用的是Asp+Sql Server。但筆者建議不要使用Asp開發,因為在提交中文字元處理上,無論是Jsp還是Python都要比Asp方便得多,當然在Wap 2.0平臺下Asp已經不存在此問題了,但是在近一年內Wap1.2瀏覽器的手機還是會佔大多數,而且不管是中國聯通還是中國移動提供的一些相關介面都是用Java開發的,不言而喻用Jsp開發會方便很多。最重要的是在效能方面jsp或.net都要優於Asp,所以筆者建議大家用Jsp/Asp.Net開發Wap。

 下面我以Asp/Asp.net為例講解: 1.1. 如何在IIS上建立Wap網站 1.1.1. 第一步: 建立一個站點資料夾 首先你要建立一個獨立於你的主站點的新的站點資料夾(若站點是建立在同一個伺服器上面的話),這樣你下面要做的改動才不會影響別的站點。 建立一個站點資料夾 1.1.2. 第二步: 在IIS 平臺建立一個新的MIME型別 先選擇WAP站點的屬性,再加入MIME型別,然後選擇HTTP Headers標籤。 在MIME Map部分,點選File Type並且輸入以下資訊: Associated Extension MIME Type wml text/vnd.wap.wml wmlc application/vnd.wap.wmlc wbmp image/vnd.wap.wbmp wmlsc application/vnd.wap.wmlscriptc wmls text/vnd.wap.wmlscript wsc application/vnd.wap/wmlscriptc

  完成以後,將會顯示以下幾種型別: 在IIS 平臺建立一個新的MIME型別

1.1.3. 第三步: 現在,你就可以把你的網站內容加到站點資料夾裡面了。 1.2. Wap模擬器 Wap模擬器有很多,公認語法檢測最嚴格的是m3gate,使用最方便的是opera.建議大家在測試程式時用m3gate,如果它沒檢查出問題,基本上在手機上就不會有問題;平常瀏覽的話就用opera(其實它就是一個網頁瀏覽器,只不過它能夠支援wml語法),它使用起來很方便,類似於IE操作。 1.3. 具體例子: 1.3.1. Asp語言例子 <% Response.ContentType ="text/vnd.wap.wml"%> < xml version="1.0" encoding="gb2312" > <!DOCTYPE wml PUBLIC "-//OPENWAVE.COM//DTD WML 1.3//EN" "http://www.openwave.com/dtd/wml13.dtd"> <wml> <card title="Wap-Asp例子"> <p align="center"><img src="test.png" alt=""/></p> <p> <% Response.Write("welcome") %> <br/> <a href="http:// wap.uni-wise.com " title="確定">返回上級</a><br/> </p> <do type="options" label="回首頁"> <go href="http://wap.uni-wise.com"/> </do> </card> </wml> 1.3.2. Asp.Net語言例子 <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Test_Wap.WebForm1" ContentType="text/vnd.wap.wml"%> < xml version="1.0" encoding="gb2312" > <!DOCTYPE wml PUBLIC "-//OPENWAVE.COM//DTD WML 1.3//EN" "http://www.openwave.com/dtd/wml13.dtd"> <wml> <card title="<%=name%>"> <p align="center" mode="nowrap"> <% Display(); %> </p> <do type="options" label="回首頁"> <go href="http://wap.uni-wise.com"/> </do> </card> </wml> 1.3.3. WebForm1.aspx.cs檔案 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;

namespace Test_Wap { /// <summary> /// WebForm1 的摘要說明。 /// </summary> public class WebForm1 : System.Web.UI.Page { protected string name="Wap-Asp.Net例子"; private void Page_Load(object sender, System.EventArgs e) { // 在此處放置使用者程式碼以初始化頁面 }

protected void Display() { Response.Write("Welcome"); }

#region Web 窗體設計器生成的程式碼 override protected void OnInit(EventArgs e) { // // CODEGEN: 該呼叫是 ASP.NET Web 窗體設計器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 設計器支援所需的方法 - 不要使用程式碼編輯器修改 /// 此方法的內容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }

Wap上的業務,圖鈴下載類佔了大部分,而且這兩種業務的收入也佔中國聯通和中國移動Wap總收入80%還多,大家在此遇到的問題也最多.。