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