程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 開發MIDP聯網應用程序

開發MIDP聯網應用程序

編輯:JAVA編程入門知識

♦ 引言

  在上講中,我們介紹了如何利用Record Store把數據保存在終端內。本講,我們將闡述MIDP Java網絡的相關功能。由於N800終端只能使用HTTP通信,所以我們將以HTTP為主要范例進行講解。到目前為止,只能制作終端內的單機型應用程序,假如利用網絡,連接網絡服務器,那麼就能夠制作出多種應用程序。

1. 利用網絡

  1.1. Generic Connection Frame Work

  J2ME應該能支持各種手機終端。由於終端不同其網絡功能及文件I/O功能也迥然不同,網絡和文件I/O關聯的圖書館所需的條件也不同。

  為了解決上述問題,JSME的CLDC采用了Generic Connection framework。Generic Connection framework擁有不同終端所需的省空間網絡功能以及文件I/O功能。廣泛應用J2SE的java.io和java.net包裡的網絡、文件I/O功能,並預備7個interface。這樣,為能支持各種手機終端的通信功能,只限定interface,在每個手機終端上都能自由安裝。不支持手機終端連接的實際安裝不能進行。各種interface的說明如表1所示、層次結構如圖1所示。

 Interface  作用  Connection  成為其他interface基礎的interface  StreamConnectionNotifier  具有socket通信連接通知功能的interface  InputConnection  具有接收數據功能的interface  OutputConnection  具有發送數據功能的interface  DatagramConnection  具有連接UDP的數據電報通信功能的interface  StreamConnection  具有socket通信接收/發送功能的interface  ContentConnection  具有通信內容調查功能的interface  HttpConnection  具有http通信功能的interface

表 1

開發MIDP聯網應用程序
  圖 1

  1.2. Connection Interface

  Connection interface在Generic Connection framework中是連接interface的基礎interface。其他的連接interface是從Connection interface派生而來的。

  1.3. Connector 類

  使用Connector類的static方法open (String connectString)入網。

Connection con = Connector.open("http://www.nec-mfriend.com/");

ex. 1

  

  例如、如ex. 1所示,在open方法的自變量中輸入“http://www.nec-mfiend.com/”,就可以實現與www.nec-mfriend.com服務器進行http通信。
    而Generic Connection framework的全部鏈接都是利用Connector類的open方法完成的。也就是說,即使鏈接類型不同,也能以同樣的方法完成。J2ME由於這樣的設計而擁有豐富的擴展性,對於上述新的裝置它也配備了簡單的支持系統。
    按照下述形式指定Open方法的自變量。

{protocol}:[{target}][{params}]

  在Protocol部分可以指定如下所示的Protocol。  值  鏈接方式  file  文件 I/O  comm.  串行端口通信  socket  Socket通信  datagram  數據電報通信  http  Web服務器通信

表 2

*N800不支持socket通信、數據電報通信,而N820支持socket通信。

  在Target部分指定服務器的用戶名、端口號和文件名等。若有必要的添加信息則在Params部分指定。

  Open方法也可以指定其他的自變量。

    static Connection open(String connectString, int mode)

從connectString中制作Connection、打開鏈接,若要使用mode鏈接則需指定Access mode。在access mode中,可以指定Connector.READ,Connector.READ_WRITE和Connector.WRITE ,若不指定,則為Connector.READ_WRITE 。在Protocol中不能指定access mode時,則放棄IllegalArgumentException。

  下表是其他Connector類的static方法。  方法  作用  DataInputStream openDataInputStream(String connectString)  從connectString中制作新的DataInputStream 並打開。  DataOutputStream openDataOutputStream(String connectString)  從connectString中制作新的DataOutputStream並打開。  InputStream openInputStream(String connectString)  從connectString中制作新的InputStream並打開。  OutputStream openOutputStream(String connectString)  從connectString中制作新的OutputStream並打開。

  1.4. HTTP 通信

  現在,我們對N800所支持的HTTP通信進行闡述。利用HTTP通信可以連接WEB服務器。例如,可以把手機終端難以處理的復雜問題交給WEB服務器處理,得出結果。HTTP通信采用MIDP方法作為標准,但是,采用MIDP作為基本方法的終端卻不能進行HTTP通信,或者有很大的限制,這一點請注重。

為能在N800中使用HTTP通信需遵從以下規定。
  • 要實現MIDlet通信必須在JAD(ADF)文件中設定MIDlet-UseNetwork(參考3.JAD(ADF)文件)為YES。.
  • 最大發送量為10kbyte。
  大於10kbyte時,超出部分被清除,小於10kbyte的數據才是有效的。
  • 最大接收量為100kbyte。
  大於100kbyte時,超出部分被清除,小於100kbyte的數據才是有效的。
  • 連接處URL
  從http://開始,包含http://,最多為512byte。不分大/小寫。

  HTTP通信由request和response兩部分組成。從客戶發出的request信息傳到服務器,服務器接收request,返還response信息。

  HTTP通信主要有下述三種request方式。  方式  作用  GET  要求指定的文件。  HEAD  要求指定文件的header信息。  POST  要求向指定文件發送信息,並得出結果。

接下來,讓我們試著用多種request與服務器進行通信。

  1.5. 利用GET

    利用GET可以讀取服務器上的文件。在使用GET之前,如下所示需在已完成的HttpConnection方法的setRequestMethod方法中,指定HttpConnection的static變數GET。

HttpConnection con = (HttpConnection)Connector.open("http://www.nec-mfriend.com/");
  con.setRequestMethod(HttpConnection.GET);
  

ex. 2

    如下所示可以利用DataInputStream獲取response。

String res="";
  DataInputStream in = con.openDataInputStream();
  int input;
  while((input = in.read())!=-1){
  res = res + (char)input;
  }
  in.close();

ex. 3

   以下實際是與服務器通信,獲取Html文件的sample。為簡單介紹sample的操作,得把通信結果,即獲取的html文件內容,輸入控制台。因此,此sample是以在模擬器上面操作為前提的。

  
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved