`
wangxc
  • 浏览: 212999 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2ME实现从服务器端下载文件(J2me for HttpConnection)

    博客分类:
  • J2ME
阅读更多
J2ME实现从服务器端下载文件:
我以下载服务器文件并在手机客户端显示图片为例:

测试截图:

程序代码
package com.mopietek;

import java.io.IOException;
import java.io.InputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
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.StringItem;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class HttpMID extends MIDlet implements CommandListener,Runnable{

	public static Command connect = new Command ("联网",Command.OK,1);
	public static Command change = new Command("更改入网的方式",Command.OK,1);
	public static Command exit = new Command("退出",Command.EXIT,1);
	
	public Form form;
	public Display display;
	
	HttpConnection http;
	
	String host = "dev.mopietek.net:8080/ebook";
	String path = "/upload/123.gif";
	//接入点为cmnet或者是cmwap
	boolean cmnet = true;
	
	public static final int WAIT = 0;  //等待
	public static final int CONNECT = 1; //连接中
	public static final int SUCCESS = 2; //成功
	public static final int FALL = 3; //失败
	public int state; //当前状态
	
	StringBuffer sb = new StringBuffer("当前接入方式为:CMNET\n");
	StringItem si = new StringItem(null,sb.toString());
	
	
	public HttpMID(){
		
		display = Display.getDisplay(this);
	    state = WAIT;
	    
		form = new Form("HttpTest");
	    form.append(si);
	    form.addCommand(connect);
	    form.addCommand(change);
	    form.addCommand(exit);
	    form.setCommandListener(this);
	    
	}
	
	protected void destroyApp(boolean unconditional)
			throws MIDletStateChangeException {
		// TODO Auto-generated method stub
		
	}

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

	protected void startApp() throws MIDletStateChangeException {

		display.setCurrent(form);
	}

	public void commandAction(Command c, Displayable d) {

		if(c == change){
			if(isConnect())
				return;
			cmnet = ! cmnet;
			form.deleteAll();
			
			sb.delete(0, sb.length());
			addStr("当前接入方式为:" + (cmnet ? "CMNET" : "CMWAP"));
			form.append(si);
			
		}
		else if(c == connect){
			if(isConnect())
				return;
			new Thread(this).start();
			
		}else if(c == exit){
			
			try {
				destroyApp(true);
			} catch (MIDletStateChangeException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			this.notifyDestroyed();
		}
		
	}

	
	
	private boolean isConnect() {
		
		if(state == CONNECT){
		   addStr("网络链接中,请稍后...");
		   return true;
		}
		return false;
	}

	private void addStr(String str) {
		
		sb.append(str + "\n");
		si.setText(sb.toString());
	}

	public void run() {

		form.deleteAll();
		
		sb.delete(0, sb.length());
		addStr("当前接入方式为:" +(cmnet ? "CMNET" : "CMWAP"));
		form.append(si);
		state = CONNECT;
		addStr("网络链接中..");
		
		InputStream is = null;
		
		try{
			
			String url = null;
			url = cmnet ? ("http://" + host + path) : ("http://10.0.0.172:80" +path);
			
			http = (HttpConnection) Connector.open(url,Connector.READ_WRITE,true);
			
			if(!cmnet)
			   
				http.setRequestProperty("X-Online-Host", host);
			    http.setRequestMethod(HttpConnection.GET);
			    String contentType = http.getHeaderField("Content-Type");
			    System.out.println(contentType);
			    if(contentType != null && contentType.indexOf("text/vnd.wap.wml") != -1){
			    	
			    	 addStr("移动资费页面,过滤");
			    	 http.close();
			    	 http = null;
			    	 http = (HttpConnection) Connector.open(url,Connector.READ_WRITE,true);
			    
			    	 if(!cmnet)
			    		 http.setRequestProperty("X-Online-Host", host);
			    	     http.setRequestMethod(HttpConnection.GET);
			    	     contentType = http.getHeaderField("Content-Type");
			    }
			    
			    addStr("Content-Type=" + contentType);
			    int code = http.getResponseCode();
			    addStr("HTTP Code :" + code);
			    if(code == 200){
			    	addStr("网络联网成功,接收数据...");
			    	is = http.openInputStream();
			    	Image image = Image.createImage(is);
			    	addStr("数据接收完毕,显示图片...");
			    	form.append(image);
			    	
			    	state = SUCCESS;
			    	return;
			    }else{
			    	addStr("访问页面失败");
			    }
		}catch(IOException e){
			addStr("联网发生异常:" + e.toString());
			e.printStackTrace();
		}catch(Exception ee){
			addStr("发生异常:" +ee.toString());
			ee.printStackTrace();
		}finally{
			if(is != null){
				try{
					is.close();
				}catch(IOException e){
					e.printStackTrace();
				}
				is = null;
			}
			
			if(http != null)
				try{
				     http.close();	
				}catch(IOException e){
					e.printStackTrace();
				}
				http = null;
			}
			state = FALL;
		
	}
	

}

  • 大小: 8.7 KB
分享到:
评论

相关推荐

    J2ME实现的断点续传,解决下载文件问题

    在J2ME(Java Micro Edition)平台上实现断点续传,可以为移动设备上的文件下载提供可靠的解决方案。本文将深入探讨J2ME中实现断点续传的关键技术点,并给出相关实现思路。 首先,理解断点续传的基本原理。断点续传...

    J2ME文件上传到服务器

    在J2ME中,实现文件上传到服务器的功能可能会面临一些挑战,因为J2ME的API相对有限且不支持大文件直接上传。下面将详细介绍如何克服这些限制,实现J2ME文件上传到服务器的过程。 首先,我们需要了解J2ME的基础知识...

    J2ME中多个文件上传

    在服务器端,根据JSR75(Java Persistence API for Ubiquitous Devices)规范,解析multipart/form-data的流,提取出各个文件和字段。JSR75主要关注设备上的持久化,但这里可能是指处理文件上传的规范。 总的来说,...

    j2me实现手机QQ源代码

    **J2ME实现手机QQ源代码详解** J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于开发移动设备和嵌入式设备的应用程序。在这个项目中,我们探讨的是如何使用J2ME技术来实现手机上的QQ应用程序。手机QQ...

    J2ME实现范例

    在本“J2ME实现范例”中,我们将深入探讨J2ME的基础知识及其在实际应用中的运用,帮助你在后续的开发工作中更加得心应手。 1. **J2ME架构**: J2ME包含配置(Configurations)和框架(Profiles),如MIDP(Mobile ...

    J2ME游戏开发教程 pdf文件

    MIDP提供了`HttpConnection`和`SocketConnection`接口,使游戏能够实现在线特性,如排行榜、多人对战和内容下载。 **8. 性能优化与调试** J2ME应用运行在受限环境中,因此优化代码以减少内存占用和CPU使用至关重要...

    J2ME开发 J2ME开发 J2ME开发

    "J2ME开发.pdf"可能包含J2ME的详细教程或者最佳实践,涵盖从基础语法到高级特性的讲解,包括UI设计(如Form和Canvas类)、数据持久化(RecordStore)、网络编程(HttpConnection和Socket)以及事件处理等。"下载必看...

    J2ME从入门到精通

    **J2ME从入门到精通** Java Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式系统和移动设备,如早期的智能手机、电视盒和家用电器。本教程将带你逐步深入J2ME的世界,理解其基本概念、开发环境搭建、...

    J2ME 入门学习书籍打包下载

    Java 2 Micro Edition(J2ME)是一种Java平台,主要用于开发在嵌入式设备和移动设备上运行的应用程序。这个平台简化了在资源有限的设备上实现Java应用程序的过程。本压缩包提供了两本关于J2ME入门学习的电子书籍:...

    用J2ME与ASP建立数据库连接.rar_http in j2me_j2me_j2me 3d_j2me asp

    总的来说,这个主题涵盖了移动开发中的网络通信和服务器交互,对于理解J2ME应用如何与服务器端动态脚本协同工作,以及如何实现移动设备的数据库访问具有重要意义。开发者需要熟悉J2ME的HttpConnection API,以及ASP...

    J2ME学习资料打包下载

    总之,这份J2ME学习资料打包下载涵盖了从基础到进阶的全方位内容,无论是对J2ME感兴趣的新手还是有经验的开发者,都能从中获益。通过深入学习和实践,可以掌握开发跨平台移动应用的技能,尤其是针对老一代移动设备的...

    手机浏览器源码(j2me)

    手机浏览器源码是移动设备上实现网页浏览功能的软件的核心组成部分。J2ME,全称为Java Micro Edition,是Java平台的一个子集,主要用于嵌入式系统,如早期的智能手机和平板电脑。本篇将深入探讨基于J2ME的手机浏览器...

    J2ME中文教程J2ME开发下载.

    - **HttpConnection**:实现HTTP协议,用于与服务器进行数据交换。 - **InputStream/OutputStream**:读写网络数据的接口。 4. **用户界面** - **LWUIT (Lightweight User Interface Toolkit)**:一个可选的库,...

    J2ME网络编程以及网络游戏的实现

    在J2ME中,开发者可以使用`HttpConnection`对象建立到Web服务器的连接,发送GET或POST请求,获取响应数据。 **三、网络游戏的实现** 1. **通信协议**:网络游戏通常采用TCP或UDP协议进行通信,TCP提供可靠的连接,...

    j2me手机浏览器/j2me手机浏览器

    j2me手机浏览器通常基于MIDP,它包含了必要的API来构建用户界面,如ChoiceGroup和Form,以及实现网络通信,如HttpConnection。此外,早期的移动互联网服务往往使用WAP(Wireless Application Protocol)协议,因此,...

    J2ME实现手机名片夹

    在网络功能方面,MIDP提供了HttpConnection API,允许应用与服务器进行交互。如果需要同步手机上的名片夹与云端服务,可以通过这个API发送HTTP请求,实现数据的上传和下载。 安全方面,J2ME提供了基本的安全模型,...

    J2ME-java手机PDA程序设计入门-王森

    5. **网络编程**:J2ME提供了HttpConnection和SocketConnection接口,允许开发者实现网络通信,如下载数据、上传用户数据或进行实时同步。 6. **数据存储**:在J2ME中,通常使用RecordStore API来持久化数据。...

    J2ME 中文api以及应用 J2ME 中文api以及应用.rar

    J2ME提供了丰富的API来实现这些设备上的功能,包括用户界面、网络通信、数据存储等。 在**J2ME中文API**中,主要包含以下几个核心部分: 1. **CLDC(Connected Limited Device Configuration)**:这是一个轻量级...

    j2me版wap浏览器源码

    总结来说,这个"j2me版wap浏览器源码"项目涵盖了J2ME平台的基础知识,XML解析技术,WAP协议的实现,以及针对移动设备的性能优化策略。对于想要学习J2ME移动开发或者WAP应用的人来说,这是一个宝贵的参考资料。通过...

Global site tag (gtag.js) - Google Analytics