-- 作者:wangxinxin
-- 發(fā)布時(shí)間:2010-12-6 11:19:39
-- 關(guān)于“WAP平臺(tái)開發(fā)技...”的內(nèi)容
三、關(guān)于WAP開發(fā)的常見問答 1.開發(fā)WAP軟件需要哪些工具? 為了開發(fā)WAP應(yīng)用程序,需要一個(gè)WAP網(wǎng)關(guān)(注意:這里的網(wǎng)關(guān)可能是指支持WML的服務(wù)器。可以通過配置WWW服務(wù)器達(dá)到這個(gè)目的)和WAP工具包。工具包應(yīng)當(dāng)包括模擬器和能讓開發(fā)者瀏覽WML網(wǎng)頁。WML頁面的開發(fā)和HTML頁面的開發(fā)一樣,可以使用Notepad或者其他文本編輯器來進(jìn)行編輯。 2.有哪些公司現(xiàn)在提供這樣的開發(fā)環(huán)境? Nokia、Ericsson、UpPhone和Motorola都提供免費(fèi)的WAP網(wǎng)關(guān)和工具包。 Nokia:Nokia Toolkit和Nokia WAP Server。 Ericsson:Ericsson R320和WapIDE。 UpPhone:UpPhone SDK。 Motorola:Motorola ADK。 3.開發(fā)WAP應(yīng)用一定要有WAP手機(jī)嗎? 不是,當(dāng)開發(fā)WAP應(yīng)用的時(shí)候,不一定需要WAP手機(jī)。模擬器可以幫助開發(fā)者解決大部分的問題。但是如果是開發(fā)商業(yè)網(wǎng)站,特別是想知道各種移動(dòng)電話在顯示WML頁面上的差別的時(shí)候,最好是配備一個(gè)。目前各種手機(jī)對(duì)WML標(biāo)記的支持和中文的支持狀況大不相同,因此WAP手機(jī)還是必要的。 4.開發(fā)者需要一個(gè)WAP網(wǎng)關(guān)嗎? 不是很必要。如果只想進(jìn)行簡單的WAP內(nèi)容服務(wù),可以使用現(xiàn)有的Web服務(wù)器(只需要修改MIME類型)。移動(dòng)電話會(huì)通過坐落在本地的網(wǎng)關(guān)連接到你的服務(wù)器上。 但是在網(wǎng)關(guān)上駐留開發(fā)者的程序有很多好處。既然開發(fā)者的程序是網(wǎng)關(guān)的一個(gè)部分,開發(fā)者就可以知道呼叫號(hào)碼、身份、位置等等。 5.可以看到WML的源代碼么? 如果開發(fā)者使用SDK瀏覽的時(shí)候?qū)⒛軌蚩吹?/font>WML的代碼。如果只有一個(gè)HTML瀏覽器,可以訪問“Fetch Page”服務(wù)(http://www.webcab.de)來取得代碼。這個(gè)可以顯示在Internet上的任何WML頁面中。 6.可能在WML中加入applets嗎? 不能。 7.可以使用HTML開發(fā)工具來開發(fā)WAP應(yīng)用嗎? 在大多數(shù)情況下開發(fā)工具是使用基于PC的瀏覽器。HTML、JavaScript和Java對(duì)于WAP開發(fā)來說都沒有用處。但是,越來越多的開發(fā)工具在加入對(duì)WML的支持。 Allair的Cold Fusion 4.5和 HomeSite已經(jīng)有WML支持,雖然Allair也許需要清除一些BUG。另外PHP和ASP在Coldfusion/HomeSite也能支持。 可以到 Marjolei Katsma的 HomeSite Help site上得到更多的信息。 8.可以通過WML頁面來操作數(shù)據(jù)庫嗎? 可以,與創(chuàng)建HTML頁面相同。任何相關(guān)的服務(wù)器端的技術(shù)都可以用來生成WML頁面。 9.可以使用CGI生成WML頁面嗎? 當(dāng)然。可以用創(chuàng)建HTML同樣的方法來創(chuàng)建WML。如果想書寫一個(gè)CGI來創(chuàng)建WML,只要記住在頁面的開頭正確設(shè)置MIME類型。具體的形式根據(jù)所使用的語言不同而不同。例如在Perl中: print ("Content-type:application/vnd.wap.wml \\n\\n\\n"); 注意至少要使用2個(gè)換行。 10.如何使用Cold Fusion來生成頁面? 使用Cold Fusion只需要加上: <CFCONTENT type="text/vnd.wap.wml"> 11.如何使用PHP來書寫動(dòng)態(tài)的WML頁面? PHP(和大多數(shù)其他服務(wù)端腳本語言一樣)可以被用來書寫動(dòng)態(tài)的WML內(nèi)容。只需要將輸出的標(biāo)記限制在WML微型瀏覽器可接受的范圍內(nèi)。 注意PHP有很多內(nèi)建的HTML功能,特別是錯(cuò)誤功能,這些功能WML微型瀏覽器可能無法識(shí)別。 PHP同樣可以在一個(gè)HTML文件中編寫出既適合于HTML,也適合于WML的內(nèi)容。PHP的源代碼對(duì)于客戶端來說是不可見的。因此可以針對(duì)HTML瀏覽器輸出HTML頁面,針對(duì)WML瀏覽器輸出WML頁面。 可以在開發(fā)PHP編寫的WML頁面的時(shí)候把以下代碼加在開頭: <? // header("Content-type: text/vnd.wap.wml"); echo("<?xml version=\\"1.0\\"?>\\n"); echo("<!DOCTYPE wml PUBLIC \\"-//WAPFORUM//DTD WML 1.1//EN\\" //"http://www.wapforum.org/DTD/wml_1.1.xml\\">\\n\\n"); ?> 基于PC的瀏覽器將忽略這些無法理解的WML標(biāo)記。但是如果想在WAP設(shè)備或者模擬器上測(cè)試的時(shí)候,只需要將"http://"去掉,頁面自動(dòng)變成WML頁面。 12.使用PHP動(dòng)態(tài)輸出WML 這些例子生成一個(gè)非常有用的應(yīng)用叫做:PizzaCalc。它將輸入所有的pizza的帳單和人的數(shù)目,可以算出每個(gè)人的花費(fèi)。 應(yīng)用生成一個(gè)動(dòng)態(tài)的頁面叫做“calc”或者“input”。注意到所有的轉(zhuǎn)義字符例如雙引號(hào)。該頁顯示了一個(gè)簡單的變量處理,和如何傳遞參數(shù)到另外的卡片: 使用WML瀏覽器就可以測(cè)試應(yīng)用程序: http://wap.colorline.no/wap-faq/apps/pizzacalc.html。 或者輸入: http://wap.colorline.no/demos.html選擇應(yīng)用。 <? header("Content-type: text/vnd.wap.wml"); echo("<?xml version=\\"1.0\\"?>\\n"); echo("<!DOCTYPE wml PUBLIC \\"-//WAPFORUM//DTD WML 1.1//EN\\" \\"http://www.wapforum.org/DTD/wml_1.1.xml\\">\\n\\n"); echo("<!--The application PizzaCalc was originally made by The Crusaders www.crusaders.no on the Commodore Amiga -->\\n"); echo("<!-- It was unfortunately not possible to emulate the crap interger handling of the original program -->\\n"); ?>
<wml> <? if($action == "calc") { echo("<card id=\\"result\\" title=\\"PizzaCalc\\">\\n"); echo("<do type=\\"prev\\" label=\\"Back\\">\\n"); echo("<go href=\\"pizzacalc.html#input\\"/>\\n"); echo("</do>\\n"); echo("<p>\\n"); echo("The cost per eater will be ".$total / $eaters."<br/>\\n"); } else { echo("<card id=\\"input\\" title=\\"PizzaCalc\\">\\n"); echo("<p>\\n"); echo("<anchor>Split Pizza bill <go href=\\"pizzacalc.html?total=\\$(total)&eaters=\\$(eaters)&action=calc\\"/> </anchor>\\n"); echo("<br/>\\n"); echo("Total cost: <input type=\\"text\\" name=\\"total\\" format=\\"*N\\"/>\\n"); echo("Eaters: <input type=\\"text\\" name=\\"eaters\\" format=\\"*N\\"/>\\n"); } ?> </p> </card> </wml><!--++ plugin_code qcomic begin--> <!--++ plugin_code qcomic end--> |
|