⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httphandler.java

📁 <j2me 开发精解> 詹建光著 里所有的源码。对J2me的开发相当有帮助
💻 JAVA
字号:
package com.j2medev.ch5.image;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.lcdui.Image;

public class HttpHandler extends Thread {
    
    private ImageMIDlet midlet = null;
    private String URL = "";
    private HttpConnection conn = null;
    private InputStream is = null;
    private boolean done = false;
    private ProgressUI progress = null;
    
    public HttpHandler(ImageMIDlet midlet) {
        //HttpHandler保持一个ImageMIDlet的引用,方便回调。
        this.midlet = midlet;
        progress = new ProgressUI("联网等待");
        progress.init();
    }
    
    public void setURL(String url){
        this.URL = url;
    }
    
    public void stop(){
        done = true;
    }
    public void run(){
        while(!done){
            //线程启动进入等待状态
            synchronized (midlet) {
                try {
                    midlet.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            
            if(!done){
                try{
                    
                    //建立HttpConnection连接
                    conn = (HttpConnection)Connector.open(URL);
                    midlet.setCurrent(progress);
                    //判断返回的HTTP响应码 200表示连接成功
                    int code = conn.getResponseCode();
                    if(code != HttpConnection.HTTP_OK){
                        midlet.displayError("连接服务器错误,无法读取图片");
                        return;
                    }
                    int contentLength = (int)conn.getLength();
                    //打开输入流,准备读取图片
                    is = conn.openInputStream();
                    //在内存开辟一块空间用于存储图片
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    //建立512k字节的缓冲区,读取图片
                    byte[] buffer = new byte[512];
                    int length = 0;
                    int read = 0;//记录已经读取的数据长度
                    while((length = is.read(buffer, 0, buffer.length)) != -1){
                        read = read + length;
                        progress.onProgress(read*100/contentLength);
                        baos.write(buffer, 0,length);
                    }
                    
                    byte[] data = baos.toByteArray();
                    Image image = Image.createImage(data, 0, data.length);
                    //关闭连接
                    is.close();
                    conn.close();
                    //显示图片
                    midlet.setImage(image);
                    
                }catch(IOException ex){
                    midlet.displayError(ex.getMessage());
                }
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -