開發(fā)MIDP聯(lián)網(wǎng)應用程序
importjavax.microedition.io.Connector;
importjavax.microedition.io.HttpConnection;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
/**
*利用GET發(fā)送request的sample
*從控制臺輸出response
*/
publicclassGETTestextendsMIDlet{
/**
*訪問服務器
*/
protectedvoidstartApp()throwsMIDletStateChangeException{
try{
HttpConnectioncon=(HttpConnection)Connector.open(http://www.nec-mfriend.com/en/);
//指定GET
con.setRequestMethod(HttpConnection.GET);
DataInputStreamin=con.openDataInputStream();
intinput;
while((input=in.read())!=-1){
System.out.print((char)input);
}
in.close();
//關閉鏈接
con.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
protectedvoidpauseApp(){
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
}
}
ex.4
實際操作后的結果。
1.6.利用HEAD
接下來介紹如何利用HEAD方法獲取文件的header。多數(shù)情況下,在HTTPheader中,包含了文件種類、尺寸大小、文字編碼、回復日期、request文件的最后修改時間、以及兌現(xiàn)期限的截止日期等。一般來講,使用HEAD方法檢查其是否對兌現(xiàn)內容進行了新信息的替換。
為使用HEAD,如下所示要在作成的HttpConnection的setRequestMethod方法中,指定HttpConnection的static變量HEAD。
HttpConnectioncon=(HttpConnection)Connector.open(http://www.nec-mfriend.com/en/);
con.setRequestMethod(HttpConnection.HEAD);
獲取HEAD信息的方法。
表3
下面是利用getHeaderField方法和getHeaderFieldKey方法,獲取全部header信息的sample。這個sample與剛才所介紹的一樣,是以在模擬器上進行操作為前提而作成的,它只用于說明,實際操作還沒有進行測定。由此獲取的全部header信息內容將輸入控制臺。
importjava.io.IOException;
importjavax.microedition.io.Connector;
importjavax.microedition.io.HttpConnection;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
/**
*利用HEAD發(fā)送request的sample
*從控制臺輸出response
*/
publicclassHEADTestextendsMIDlet{
/**
*顯示header信息
*/
protectedvoidstartApp()throwsMIDletStateChangeException{
try{
HttpConnectioncon=
(HttpConnection)Connector.open(http://www.nec-mfriend.com/en/);
//指定HEAD
con.setRequestMethod(HttpConnection.HEAD);
//取得關鍵的HTTPheader信息——成對的值
inti=0;
Stringmessage=;
Stringkey=;
Stringvalue=;
while((value=con.getHeaderField(i))!=null){
key=con.getHeaderFieldKey(i++);
message=message+key+:+value+n;
}
System.out.println(message);
//關閉鏈接
con.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
protectedvoidpauseApp(){
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
}
}
ex.5
實際操作后的結果如下所示。
圖3
1.7.利用POST
為能利用POST發(fā)送request,要使用InputStream和OutputStream。用OutputStream向服務器發(fā)送數(shù)據(jù),而InputStream則接收來自服務器的response。
用下述方法指定POST。
HttpConnectioncon=(HttpConnection)Connector.open(http://www.yahoo.com);
con.setRequestMethod(HttpConnection.POST);
ex.6
如下所示使用OutputStream在requeat信息中輸入數(shù)據(jù),使輸入數(shù)據(jù)為(message=helloworld),而變量con是指定了POST的HttpConnection。
Stringmessage=hmessage=helloworldh;
DataOutputStreamdos=con.openDataOutputStream();
byte[]request=message.getBytes();
for(inti=0;i
dos.writeByte(request[i]);
}
dos.flush();
ex.7
下面實際是利用POST與服務器進行通信的sample。在這里,WEB服務器將轉發(fā)利用POST發(fā)送的信息值,并接收最終結果response。接收的response內容將被輸入控制臺,請用模擬器進行確認。
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
importjavax.microedition.io.Connector;
importjavax.microedition.io.HttpConnection;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
/**
*利用POST發(fā)送request的sample
評論