科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[冷枫]在无线J2ME设备上实现超文本传输协议

[冷枫]在无线J2ME设备上实现超文本传输协议

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在无线J2ME设备上实现超文本传输协议[带源码]

作者:冷枫 来源:CSDN 2007年9月24日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

附录:

/*
* HttpMidlet.java
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;


public class HttpMidlet extends MIDlet implements CommandListener {
//
使用默认的URL。用户可以从图形用户接口改变这个值
private static String defaultURL = "http://localhost:8080/test/servlet/EchoServlet";

//
MIDP 显示
private Display myDisplay = null;

//
输入URL的图形用户接口组件
private Form requestScreen;
private TextField requestField;

//
用于提交请求的图形用户接口组件
private List list;
private String[] menuItems;

//
用于显示服务器响应的图形用户接口组件
private Form resultScreen;
private StringItem resultField;

//
用于requestScreen"send"按钮
Command sendCommand;
//
用于requestScreen"exit"按钮
Command exitCommand;
//
用于requestScreen"back"按钮
Command backCommand;

public HttpMidlet(){
//
初始化图形用户接口组件
myDisplay = Display.getDisplay( this );
sendCommand = new Command( "SEND", Command.OK, 1 );
exitCommand = new Command( "EXIT", Command.OK, 1 );
backCommand = new Command( "BACK", Command.OK, 1 );

//
显示请求的URL
requestScreen = new Form( "Type in a URL:" );
requestField = new TextField( null, defaultURL, 100, TextField.URL );
requestScreen.append( requestField );
requestScreen.addCommand( sendCommand );
requestScreen.addCommand( exitCommand );
requestScreen.setCommandListener( this );

//
选择想要的HTTP请求方法
menuItems = new String[] {"GET Request", "POST Request"};
list = new List( "Select an HTTP method:", List.IMPLICIT, menuItems, null );
list.setCommandListener( this );

//
先是从服务器上收到的信息
resultScreen = new Form( "Server Response:" );
resultScreen.addCommand( backCommand );
resultScreen.setCommandListener( this );

}//
结束HttpMidlet()

public void startApp() {
myDisplay.setCurrent( requestScreen );
}//
结束 startApp()

public void commandAction( Command com, Displayable disp ) {
//
当用户点击"send"按钮
if ( com == sendCommand ) {
myDisplay.setCurrent( list );
} else if ( com == backCommand ) {
requestField.setString( defaultURL );
myDisplay.setCurrent( requestScreen );
} else if ( com == exitCommand ) {
destroyApp( true );
notifyDestroyed();
}//
结束 if ( com == sendCommand )

if ( disp == list && com == List.SELECT_COMMAND ) {

String result;

if ( list.getSelectedIndex() == 0 ) //
发送一个 GET 请求到服务器
result = sendHttpGet( requestField.getString() );
else //
发送一个 POST 请求到服务器
result = sendHttpPost( requestField.getString() );

resultField = new StringItem( null, result );
resultScreen.append( resultField );
myDisplay.setCurrent( resultScreen );
}//
结束if ( dis == list && com == List.SELECT_COMMAND )
}//
结束 commandAction( Command, Displayable )

private String sendHttpGet( String url )
{
HttpConnection hcon = null;
DataInputStream dis = null;
StringBuffer responseMessage = new StringBuffer();

try {
//
使用READ权限的标准的 HttpConnection
hcon = ( HttpConnection )Connector.open( url );

//
HttpConnection取得一个 DataInputStream
dis = new DataInputStream( hcon.openInputStream() );

//
从服务器上取回响应
int ch;
while ( ( ch = dis.read() ) != -1 ) {
responseMessage.append( (char) ch );
}//
结束while ( ( ch = dis.read() ) != -1 )
}
catch( Exception e )
{
e.printStackTrace();
responseMessage.append( "ERROR" );
} finally {
try {
if ( hcon != null ) hcon.close();
if ( dis != null ) dis.close();
} catch ( IOException ioe ) {
ioe.printStackTrace();
}//
结束try/catch
}//
结束try/catch/finally
return responseMessage.toString();
}//
结束sendHttpGet( String )

private String sendHttpPost( String url )
{
HttpConnection hcon = null;
DataInputStream dis = null;
DataOutputStream dos = null;
StringBuffer responseMessage = new StringBuffer();
//
请求体
String requeststring = "This is a POST.";

try {
//
使用读写权限的 HttpConnection
hcon = ( HttpConnection )Connector.open( url, Connector.READ_WRITE );

//
设置请求方法为POST
hcon.setRequestMethod( HttpConnection.POST );

//
取得发送请求字符串的DataOutputStream
dos = hcon.openDataOutputStream();
byte[] request_body = requeststring.getBytes();

//
发送请求字符串到服务器
for( int i = 0; i < request_body.length; i++ ) {
dos.writeByte( request_body[i] );
}//
结束 for( int i = 0; i < request_body.length; i++ )

//
取得做为接收服务器响应的DataInputStream
dis = new DataInputStream( hcon.openInputStream() );

//
从服务器上取回响应
int ch;
while( ( ch = dis.read() ) != -1 ) {
responseMessage.append( (char)ch );
}//
结束while( ( ch = dis.read() ) != -1 ) {
}
catch( Exception e )
{
e.printStackTrace();
responseMessage.append( "ERROR" );
}
finally {
//
释放输入输出流和HTTP连接
try {
if( hcon != null ) hcon.close();
if( dis != null ) dis.close();
if( dos != null ) dos.close();
} catch ( IOException ioe ) {
ioe.printStackTrace();
}//
结束try/catch
}//
结束try/catch/finally
return responseMessage.toString();
}//
结束sendHttpPost( String )

public void pauseApp() {
}//
结束pauseApp()

public void destroyApp( boolean unconditional ) {
myDisplay = null;
requestScreen = null;
requestField = null;
resultScreen = null;
resultField = null;
}//
结束 destroyApp( boolean )
}//
结束HttpMidlet

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=331418

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章