關於CNNet,cnwap j2me聯網實踐。

raorq發表於2020-04-06

在j2medev上見到一篇關於CMNET和CMWAP網路連線。   現在我根據我的實際經驗總結下它們。
1。CNNET,這個就不用怎麼樣介紹了,跟電腦上Internet沒什麼區別。
直接用這個這樣的程式碼就Ok了

java 程式碼
 
try {                http = (HttpConnection) Connector.open(url);           } catch (IOException e) {                           e.printStackTrace();   }  

2。CNWAP,這個我的實踐結果根網上的很多介紹不同。看下面這段文字。下面摘自。在J2ME中使用CNWAP接入點聯網

都是中國移動搞出來的事情。
所以對於特定的一些機型,普通的直接聯網方式會出現連不上網路,這是因為你的手機裝置不支援CNNET的聯網方式。也許你會發現不經過修改,直接連線的方式也可以在一些cnwap的裝置上(只支援cnwap的多為低端機)執行,這個是因為裝置上應中國一定的要求,在系統底層進行了轉換,如果沒有轉換的話,就必須你自己手動在程式碼裡面顯式的來轉換了。
 
這裡我只打算給出一些示意程式碼,用來輔助說明解決問題的方法
 
假設你原來要請求的頁面是:htpp://www.testwap.com/test/try.jsp
那麼你會用這句話連線
HttpConnection httpConnection = (HttpConnection)Connector.open(“http://www.testwap.com/test/try.jsp”);
 
但是為了轉成CNWAP的聯網形式 你必須這麼寫
HttpConnection httpConnection = (HttpConnection)Connector.open(“http://10.0.0.172:80/test/try.jsp”);
接著再寫
httpConnection.setRequestProperty("X-Online-Hostwww.testwap.com");
httpConnection.setRequestProperty("Accept","*/*"); 
這樣就ok了
 
不過這個方法在模擬器上沒辦法測試,因為模擬器移動閘道器不讓你進啊,所以寫程式碼的時候用cnnet的正式釋出的時候改成cnwap的。很麻煩
程式碼是
java 程式碼
 
  1. http =(HttpConnection)Connector.open("http://10.0.0.172:80/"+url,Connector.READ,true);  
  2.   
  3.      c.setRequestProperty("X-Online-Host",ServerName);  
  4.   
  5.      c.setRequestProperty("Accept""*/*");  

上面的程式碼CNNET我試過,因為我那個足球專案需要採用Scoket,確實是只有CNNet能開啟Socket。
第二種,我卻意外發現,我開發WapExporer進行測試的時候,我沒有采用代理,也可以獲取連線。
分析有以下幾種可能。
1.移動那邊可能對於CNNET來說,幾乎是對所有的協議進行開放。比如(Socket,Http)跟所有埠。
2.對於CNWAP,我估計只開放http協議以及80埠,其他的都封閉,也就是CNWAP只能訪問http協議。
   由於我測試的IP地址進行測試,所以它可以直接找到。對於非IP地址我沒測試果。也許CNWAP不能解釋域名也說不定,這點我就不清楚了。

相關文章