關(guān)鍵字: J2ME
在j2medev上見(jiàn)到一篇關(guān)于CMNET和CMWAP網(wǎng)絡(luò)連接。 現(xiàn)在我根據(jù)我的實(shí)際經(jīng)驗(yàn)總結(jié)下它們。
1。CNNET,這個(gè)就不用怎么樣介紹了,跟電腦上Internet沒(méi)什么區(qū)別。
直接用這個(gè)這樣的代碼就Ok了
2。CNWAP,這個(gè)我的實(shí)踐結(jié)果根網(wǎng)上的很多介紹不同??聪旅孢@段文字。下面摘自。在J2ME中使用CNWAP接入點(diǎn)聯(lián)網(wǎng)
都是中國(guó)移動(dòng)搞出來(lái)的事情。
所
以對(duì)于特定的一些機(jī)型,普通的直接聯(lián)網(wǎng)方式會(huì)出現(xiàn)連不上網(wǎng)絡(luò),這是因?yàn)槟愕氖謾C(jī)設(shè)備不支持CNNET的聯(lián)網(wǎng)方式。也許你會(huì)發(fā)現(xiàn)不經(jīng)過(guò)修改,直接連接的方式
也可以在一些cnwap的設(shè)備上(只支持cnwap的多為低端機(jī))運(yùn)行,這個(gè)是因?yàn)樵O(shè)備上應(yīng)中國(guó)一定的要求,在系統(tǒng)底層進(jìn)行了轉(zhuǎn)換,如果沒(méi)有轉(zhuǎn)換的話,就
必須你自己手動(dòng)在代碼里面顯式的來(lái)轉(zhuǎn)換了。
這里我只打算給出一些示意代碼,用來(lái)輔助說(shuō)明解決問(wèn)題的方法
假設(shè)你原來(lái)要請(qǐng)求的頁(yè)面是:htpp://www.testwap.com/test/try.jsp
那么你會(huì)用這句話連接
HttpConnection httpConnection = (HttpConnection)Connector.open(“http://www.testwap.com/test/try.jsp”);
但是為了轉(zhuǎn)成CNWAP的聯(lián)網(wǎng)形式 你必須這么寫(xiě)
HttpConnection httpConnection = (HttpConnection)Connector.open(“http://10.0.0.172:80/test/try.jsp”);
接著再寫(xiě)
httpConnection.setRequestProperty("X-Online-Hostwww.testwap.com");
httpConnection.setRequestProperty("Accept","*/*");
這樣就ok了
不過(guò)這個(gè)方法在模擬器上沒(méi)辦法測(cè)試,因?yàn)槟M器移動(dòng)網(wǎng)關(guān)不讓你進(jìn)啊,所以寫(xiě)代碼的時(shí)候用cnnet的正式發(fā)布的時(shí)候改成cnwap的。很麻煩
代碼是
java 代碼
- http =(HttpConnection)Connector.open("http://10.0.0.172:80/"+url,Connector.READ,true);
-
- c.setRequestProperty("X-Online-Host",ServerName);
-
- c.setRequestProperty("Accept", "*/*");
上面的代碼CNNET我試過(guò),因?yàn)槲夷莻€(gè)足球項(xiàng)目需要采用Scoket,確實(shí)是只有CNNet能打開(kāi)Socket。
第二種,我卻意外發(fā)現(xiàn),我開(kāi)發(fā)WapExporer進(jìn)行測(cè)試的時(shí)候,我沒(méi)有采用代理,也可以獲取連接。
分析有以下幾種可能。
1.移動(dòng)那邊可能對(duì)于CNNET來(lái)說(shuō),幾乎是對(duì)所有的協(xié)議進(jìn)行開(kāi)放。比如(Socket,Http)跟所有端口。
2.對(duì)于CNWAP,我估計(jì)只開(kāi)放http協(xié)議以及80端口,其他的都封閉,也就是CNWAP只能訪問(wèn)http協(xié)議。
由于我測(cè)試的IP地址進(jìn)行測(cè)試,所以它可以直接找到。對(duì)于非IP地址我沒(méi)測(cè)試果。也許CNWAP不能解釋域名也說(shuō)不定,這點(diǎn)我就不清楚了。
java 代碼
try {
http = (HttpConnection) Connector.open(url);
} catch (IOException e) {
e.printStackTrace();