`

J2ME无线联网技术中的HTTP连接[转]

阅读更多
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.IOException;

import javax.microedition.io.Connector;
import javax.microedition.io.ContentConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.ImageItem;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

/**
* 在运行的TextBox输入框中输入一个图片的网址,下载到模拟器中
*
* 例如:在输入框中输入:www.baidu.com/img/logo.gif
*
* @author mao
*
*/
public class ViewImage extends MIDlet implements CommandListener {

    private Display display;
    private TextBox tbMain;
    private Alert alStatus;
    private Form fm;
    private Command cmExit;
    private Command cmView;
    private Command cmBack;
    private static final int ALERT_DISPLAY_TIME = 3000;
    Image im = null;

    public ViewImage() {
        display = Display.getDisplay(this);
        tbMain = new TextBox("输入图片地址:", "http://", 75, 0);
        cmExit = new Command("退出", Command.EXIT, 1);
        cmView = new Command("下载", Command.SCREEN, 2);
        tbMain.addCommand(cmExit);
        tbMain.addCommand(cmView);
        tbMain.setCommandListener(this);
        fm = new Form("");
        cmBack = new Command("后退", Command.BACK, 1);
        fm.addCommand(cmBack);
        fm.setCommandListener(this);
    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    }

    protected void pauseApp() {
    }

    protected void startApp() throws MIDletStateChangeException {
        display.setCurrent(tbMain);
    }

    public void commandAction(Command c, Displayable s) {
        if (c == cmExit) {
            try {
                destroyApp(false);
                notifyDestroyed();
            } catch (MIDletStateChangeException e) {
                e.printStackTrace();
            }
        } else if (c == cmView) {
            showAlert("下载中...", false, tbMain);
            Download dl = new Download(tbMain.getString(), this);
            dl.start();
        } else if (c == cmBack) {
            display.setCurrent(tbMain);
        }
    }

    public void showImage(boolean flag) {
        if (flag == false)
            showAlert("下载失败...", true, tbMain);
        else {
            ImageItem ii = new ImageItem(null, im, ImageItem.LAYOUT_DEFAULT,
                    null);
            if (fm.size() != 0)
                fm.set(0, ii);
            else
                fm.append(ii);
            showAlert("下载成功", true, fm);
        }
    }

    public void showAlert(String msg, boolean modal, Displayable displayable) {
        alStatus = new Alert("状态", msg, null, AlertType.INFO);
        if (modal)
            alStatus.setTimeout(Alert.FOREVER);
        else
            alStatus.setTimeout(ALERT_DISPLAY_TIME);
        display.setCurrent(alStatus, displayable);
    }
}

class Download implements Runnable {

    private String url;
    private ViewImage Midlet;
    private boolean downloadSuccess = false;

    public Download(String url, ViewImage Midlet) {
        this.url = url;
        this.Midlet = Midlet;
    }

    public void run() {
        try {
            getImage(url);
        } catch (Exception e) {
            System.err.println("Msg : " + e.toString());
        }
    }

    public void start() {
        Thread thread = new Thread(this);
        try {
            thread.start();
        } catch (Exception e) {
        }
    }

    private void getImage(String url) throws IOException {

        System.out.println();
       
        System.out.println("this is the url : " + url);

        ContentConnection connection = (ContentConnection) Connector.open(url);

        System.out.println("connection : " + connection);

        DataInputStream iStrm = connection.openDataInputStream();
       
        System.out.println("iStrm: " + iStrm);
       
        ByteArrayOutputStream bStrm = null;
        Image im = null;
        try {
            byte imageData[];
            int length = (int) connection.getLength();
            if (length != -1) {
                imageData = new byte[length];
                iStrm.readFully(imageData);
            } else {
                bStrm = new ByteArrayOutputStream();
                int ch;
                while ((ch = iStrm.read()) != -1)
                    bStrm.write(ch);
                imageData = bStrm.toByteArray();
            }
            im = Image.createImage(imageData , 0 , imageData.length);
        } finally {
            if (connection != null)
                connection.close();
            if (iStrm != null)
                iStrm.close();
            if (bStrm != null)
                bStrm.close();
        }
        if (im == null)
            Midlet.showImage(false);
        else {
            Midlet.im = im;
            Midlet.showImage(true);
        }
    }
}

 

 

 

http://www.java-cn.com/club/html/63/n-163-3.htmlj2me最佳联网方案终结版
用 J2ME 进行联网用 J2ME 进行联网http://www.ibm.com/developerworks/cn/java/wi-jio/

 

分享到:
评论

相关推荐

    j2ME无线编程开发基础与入门

    总的来说,J2ME无线编程是将Java技术应用于移动设备和嵌入式系统的专业领域,它涉及Java基础知识、J2ME架构、MIDP和CLDC、UI设计、网络编程以及性能优化等多个方面。通过深入学习和实践,开发者可以创建出跨平台、...

    第十章无线网络开发--j2me开发.ppt

    本章将深入探讨J2ME中的联网技术,特别是通用连接框架(Generic Connection Framework, GCF)。 ### 10.1 J2ME联网技术简介 在Java Standard Edition (J2SE)中,我们通常使用`java.net`和`java.io`包中的类来处理...

    j2me 中文教程 开发环境 J2ME语言

    发无线联网应用程序时,和以往有很大不同。 第八章“MIDP 2.0 安全体系结构” 将主要介绍MIDP 的安全体系模型,并结合一个具体的 实例来讲述MIDP2.0 安全模型的主要概念。 第九章“MIDP 2.0 Push 技术”介绍了如何...

    J2ME手机开发技术API

    HttpConnection和Socket类支持HTTP和TCP/IP连接,使得开发者可以构建联网应用。而无线消息接口(Wireless Messaging API, WMA)则允许发送和接收SMS和MMS消息。 **文件系统访问**在J2ME中通常受限,但依然可以通过...

    J2ME 中文教程

    这要求我们在开发无线联网应用程序时,和以往有很大不同。 第八章“MIDP 2.0安全体系结构” 将主要介绍MIDP的安全体系模型,并结合一个具体的实例来讲述MIDP2.0安全模型的主要概念。 第九章“MIDP 2.0 Push ...

    j2me手机基于服务器的网络象棋游戏源代码

    在这个项目中,开发者使用了J2ME的无线应用协议(WAP)和移动信息设备描述(MIDP)来创建用户界面和处理网络通信。WAP使得移动设备能够通过无线网络访问互联网服务,而MIDP则为开发移动应用程序提供了API和框架。 ...

    J2ME 中文版教程

    发无线联网应用程序时,和以往有很大不同。 第八章“MIDP 2.0 安全体系结构” 将主要介绍MIDP 的安全体系模型,并结合一个具体的 实例来讲述MIDP2.0 安全模型的主要概念。 第九章“MIDP 2.0 Push 技术”介绍了如何...

    J2ME 做的象棋游戏以及论文(支持蓝牙联网PVP)

    蓝牙联网功能的实现则需要利用J2ME中的JSR-82(Java Bluetooth API),它提供了在设备之间建立无线连接的接口。开发者需要创建BluetoothServerSocket和BluetoothSocket来监听和建立连接,然后通过输入/输出流进行...

    J2ME 中文教程1.01a

    这要求我们在开发无线联网应用程序时,和以往有很大不同。 第八章“MIDP 2.0安全体系结构” 将主要介绍MIDP的安全体系模型,并结合一个具体的实例来讲述MIDP2.0安全模型的主要概念。 第九章“MIDP 2.0 Push ...

    基于J2ME MIDP的移动通信技术研究.pdf

    本文主要探讨了J2ME MIDP(Mobile Information Device Profile)在移动通信技术中的应用。J2ME(Java 2 Micro Edition)是一种专门为小型设备如手机和嵌入式系统设计的Java平台。MIDP是J2ME的一部分,用于开发移动...

    J2ME编程源代码(书中代码)

    - J2ME支持HTTP和WAP协议,使得应用程序可以访问网络资源,这对于创建联网应用或下载更新内容至关重要。 5. **文件系统** - J2ME提供了RecordStore API用于在设备上存储小量的数据,这对于保存用户设置或游戏进度...

    J2ME 开发入门课件

    部署方式有无线下载(OTA,Over-The-Air)和通过PC连接设备进行安装。 **9. 模拟器与设备测试** 在实际开发过程中,除了使用WTK模拟器进行初步测试外,最终还需要在目标设备上进行真机测试,以确保应用在不同设备上...

    J2ME移动应用开发实战视频教 [网页、核心技术任你下载]

    6. **网络编程**:J2ME支持HTTP和WAP协议,可以进行网络通信,实现数据的下载和上传,这对于构建联网应用至关重要。 7. **文件系统操作**:J2ME提供了对设备本地文件系统的访问接口,开发者需要了解如何保存和读取...

    baoshi.rar_J2ME游戏_j2me_手机游戏

    在手机游戏开发中,通常使用MIDP(Mobile Information Device Profile)作为基础规范,它包含了开发移动应用所需的基本组件,如用户界面、数据存储和网络连接等。为了开发,你需要安装支持MIDP的J2ME SDK,例如Sun ...

    公司内部J2ME培训资料.rar

    J2ME提供了JSR 82(Java API for Bluetooth Wireless Technology)和JSR 118(Java APIs for HTTP-based Client-Side Applications)等API,支持无线设备间的通信和HTTP请求,使得开发者可以创建能联网的游戏或应用...

    J2ME教程(From IBM).rar

    J2ME应用可以通过无线下载(OTA,Over The Air)或USB连接部署到设备上。 **九、优化与性能** 由于J2ME运行在资源有限的设备上,优化代码以降低内存消耗和提高执行效率是必要的。这包括合理使用对象池、避免内存...

    J2ME蓝牙实战入门.doc

    在J2ME中,尽管MIDP 2.0标准并未包含蓝牙API,但许多手机厂商如Nokia已经在他们的设备上实现了JSR82,使得开发者可以创建跨设备的蓝牙连接应用。例如,Nokia 6600、Nokia 6670和Nokia 7610等型号的手机都支持这一...

    JAVA基于J2ME的手机游戏开发(论文+源代码).rar

    MIDP包含对CLDC中的GCF(Generic Connection Framework),即通用连接框架的支持,MIDP规范只是要区分必须实现HTTP的连接。如果想开发的是基于无线网络的高性能的多人联网游戏,这非常值得考虑应用。目前的情况是,...

    哈工大J2ME课件(新)2008届

    学习者将学习如何创建客户端和服务器端的Socket连接,发送和接收数据,这对于开发联网应用至关重要。 7. **3D图形生成技术**:虽然J2ME的3D支持相对有限,但依然可以利用一些库和技巧创建简单的3D效果。这部分可能...

Global site tag (gtag.js) - Google Analytics