J2ME GCF--通用连接框架--图片下载

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.ContentConnection;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

// 第六章 开发无线网络应用程序
//Generic Connection Framework --通用连接框架
//GCF的特性:
// 基于接口设计,便于扩展,提供了创建连接的工厂方法 ,使用标准的url
// 各接口的作用:HttpConnection HttpsConnection 接口,使得MIDlet 具备了通过Http 或者Https 协议与server 通信的能力;
// 可选:SocketConnection / ServerSocketConnection、UDPDatagramConnection , 使得MIDlet 能够在TCP/IP 层通过Socket进行通信或者
// 使用数据报进行通信

// 现实世界使用的是:分组数据交换和电路交换 , 因此在联网框架中定义了 :DatagramConnection 和 StreamCononection;
// 在基于流的传输中我们要对输入流和输出流是具有操作能力的;StreamConnection 扩展了InputConnection 和OutputConnection; 打开:Con.opeanInputStream();
// SreamConnectionNotifier接口定义了连接监听器应该具备的能力;


public class SixSection_GCF extends MIDlet {

//准备需要使用到的数据类型
private ContentConnection connection = null;
private ByteArrayOutputStream baos = null; // 字节数据输出流
private Image image = null; //初始化图片
private byte[] imageData = null;
private DataInputStream dis = null; // 新建数据输出流
private Form form = new Form("下载图片");
private Display display ;

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub

}

protected void pauseApp() {
// TODO Auto-generated method stubs

}

protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display = Display.getDisplay(this);
getImage("http://localhost:8080/imageSite/mv.jpg");
form.append(image);
display.setCurrent(form);
}

//下载图片
public void getImage(String url){
try{
//建立Http连接
connection = (ContentConnection) Connector.open(url);
//新建输入输入流
dis = connection.openDataInputStream();
//获得Http连接的长度
int length =(int) connection.getLength();

if(length!=-1){
imageData = new byte[length];
//使用流读取 --输入,读 /输出,写
dis.readFully(imageData); // 读取到数据
}else{
baos = new ByteArrayOutputStream();
int ch = 0;
while((dis.read())!=-1){
baos.write(ch);
imageData = baos.toByteArray();
}
}
image = Image.createImage(imageData, 0, imageData.length);

}catch(Exception exs){
exs.printStackTrace();
}finally{
//资源回收
try{
if(connection!=null){connection.close();}
if(dis!=null){
dis.close();
}
if(baos!=null){
baos.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值