`
wangxc
  • 浏览: 210480 次
  • 性别: 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的通用联网框架开发联网.pdf

    在J2ME中,联网功能对于创建能够与服务器进行交互的应用程序至关重要。本文将详细介绍如何使用J2ME的通用联网框架来开发联网应用。 首先,MIDP(Mobile Information Device Profile)是J2ME的一个子集,它定义了...

    在无线J2ME设备上实现http传输.doc

    在无线J2ME设备上实现HTTP传输涉及到的关键技术主要包括Java Micro Edition (J2ME)、MIDP(Mobile Information Device Profile)、HTTP协议以及J2ME的网络编程接口。J2ME是Java平台的一个轻量级版本,专为资源有限的...

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

    用J2ME与ASP建立数据库连接 J2ME是利用HttpConnection建立HTTP连接,然后获取数据,ASP也是利用HTTP协议,因而可以利用J2ME与ASP建立连接,从而访问数据库。

    j2me网络编程以及网络游戏的实现.doc

    在实现J2ME网络应用时,通常需要一个Web服务器来处理客户端的请求并管理数据。Tomcat是一个流行的开源Java Servlet容器,它可以部署和运行Java Web应用程序。以下是如何使用Tomcat搭建Web服务器的基本步骤: 1. **...

    J2me访问c# Web Services

    总之,要使J2ME应用程序成功访问C# Web服务并处理中文字符,关键在于理解两种平台的编码差异,正确配置服务器端和客户端的编码设置,并在客户端代码中适当地处理网络通信过程。通过遵循上述步骤和注意事项,你可以...

    tengge手机端j2me编程教程.doc

    在手机端进行J2ME编程,你需要以下几个核心工具: 1. **文本编辑器**:用于编写Java源代码。建议使用UTF-8格式的编辑器,例如s40的minicommander或s60的Python脚本编辑器,避免使用可能导致编码问题的x-plore。 2....

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

    2.4.6 使用HttpConnection 8 2.4.7 永久性数据(RMS) 9 2.4.8 存储集(Record Store) 10 2.4.9 记录 11 2.4.10 枚举 12 2.4.11 异常 13 2.5 用户界面(LCDUI 13 2.5.1 UI基础 13 2.5.2 高级UI 14 2.5.3 低级UI 15 ...

    J2ME中文API(自己翻译的)初学者用

    这个“J2ME中文API(自己翻译的)初学者用”文件,显然是为初学者提供的一份中文版J2ME API参考,便于理解和学习。以下将详细介绍其中涉及的一些关键类和接口: 1. **Alert**:用于在用户界面上显示一个包含消息的...

    J2me访问c# Web Services解决了中文乱码

    - 在J2ME端,我们需要创建一个HttpConnection实例来调用Web服务。为了确保正确编码,可能需要在发送请求前手动设置编码。虽然J2ME的HttpConnection类默认可能不支持GBK或GB2312,但可以通过设置请求头来指定编码。...

    基于J2ME的手机游戏开发.doc

    网络功能在J2ME中通过Connector类提供,允许游戏与服务器进行数据交换,例如下载更新、同步玩家数据或实现多人在线游戏。HttpConnection类则可以用来发起HTTP请求,获取网页内容或者发送POST请求,这对于实现联网...

    J2ME贪吃蛇游戏论文

    六、使用HttpConnection 8 七、永久性数据(RMS) 9 八、存储集(Record Store) 9 九、记录 12 十、枚举 12 十一、异常 13 第五节 用户界面(LCDUI 13 一、 UI基础 14 二、 高级UI 14 三、低级UI 15 第三章 手机...

    J2ME试题总汇(全面)

    J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于移动设备、嵌入式系统等资源受限的环境。J2ME试题总汇涵盖了该领域的重要概念和技术,帮助开发者巩固和检验自己的技能。 1. MIDP(Mobile ...

    j2me调用.net WebService实例

    在本文中,我们将深入探讨如何使用J2ME(Java 2 Micro Edition)调用.NET Web服务,并解决中文字符传输的问题。这个过程涉及多个步骤,包括环境配置、创建Web服务、设置编码以及编写J2ME客户端。 首先,确保你已经...

    基于J2ME的手机游戏开发

    2.4.6 使用HttpConnection 2.4.7 永久性数据(RMS) 2.4.8 存储集(Record Store) 2.4.9 记录 2.4.10 枚举 2.4.11 异常 2.5 用户界面(LCDUI 2.5.1 UI基础 2.5.2 高级UI 2.5.3 低级UI 第三章 手机游戏...

    JAVA基于J2ME的手机游戏开发吞吃蛇小游戏(论文+源代码)

    2.4.6 使用HttpConnection 8 2.4.7 永久性数据(RMS) 9 2.4.8 存储集(Record Store) 10 2.4.9 记录 11 2.4.10 枚举 12 2.4.11 异常 13 2.5 用户界面(LCDUI 13 2.5.1 UI基础 13 2.5.2 高级UI 14 2.5.3 低级UI 15 ...

    huayu211_JAVA相关问题.

    3. 在设备的文件管理系统中找到jar文件,选择安装,并在下载提示出现时确认安装位置为记录存储。 4. 安装成功后,设备会询问是否立即执行程序,选择是即可进入程序主菜单。 5. 若需卸载Java程序,可在设备菜单中找到...

    J2ME Network Auto Configuration-开源

    它可以自动测试您的网络设置以连接互联网。 在中国,中国移动/联合通信提供了两个代理wap网关来访问互联网。 它使用HttpConnection访问网络。 源代码:http://j2meautonetwork.cvs.sourceforge.net/

    移动开发文档

     Form 容器类:能显示从Item派生的类  GameCanvas  Gauge 显示图形化的进度条  Graphics 虚拟画笔  Hashtable Hash表 二维集合;  HttpConnection  HttpsConnection  IOException  ...

    comtorJ2ME-开源

    comtorJ2ME是一个简化J2ME软件开发的库。 这是一个集合模板(java接口),封装了Form,List和Canvas的频繁初始化。 包括其他有用的类RMS,StringTokenizer,HttpConnection

Global site tag (gtag.js) - Google Analytics