- 浏览: 626172 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (448)
- 字符串相关 (16)
- Struts2页面显示 (15)
- Hibernate错误记录 (6)
- linux命令 (2)
- java项目测试 (5)
- 个人作品 (10)
- hibernate应用 (15)
- struts1 (7)
- 数据库(除了hibernate) (42)
- J2ME/WAP (37)
- servlet/jsp (49)
- java桌面应用+java综合 (14)
- 服务器配置,报错解决 (24)
- Myeclipse配置,抛错解决 (8)
- linux (18)
- JavaScript+jquery+ajax (45)
- div css 页面设计 (16)
- 互联网综合运营 (14)
- 编程工具类 (3)
- 论文 报告 文献 (14)
- PHP (26)
- struts2 (9)
- spring (1)
- 我的IT生活 (14)
- Resin (6)
- java项目记录 (14)
- https安全 (11)
- 支付技术 (3)
最新评论
-
yihaijunyxr:
很好呀,我好久没用iteye了,今天找出两个帐号(yihaij ...
c/c++的监听tmlisten启动缓慢解决 -
yihaijun:
好像这不算是技术博客,是工作博客
c/c++的监听tmlisten启动缓慢解决 -
ml365:
后来还优化了webservice的前置框架,不用cxf,用了另 ...
c/c++的监听tmlisten启动缓慢解决 -
Jayliuying:
有点晚哈 但是也支持一下 楼主
java相关论文的参考文献【转】 -
gqsunrise:
...
我是项目经理,我的项目管理日记【20120229】
新建一个Midp应用程序,在startApp中加入以下代码:
1 SocketConnection conn = null; 2 OutputStream os = null; 3 InputStream is = null; 4 try { 5 // url: https://ebs.95559.com.cn/corporbank/es_logon.jsp 6 conn = (SocketConnection) Connector.open("socket://10.0.0.172:80", Connector.READ_WRITE, true); 7 conn.setSocketOption(SocketConnection.DELAY, 0); 8 conn.setSocketOption(SocketConnection.KEEPALIVE, 300); 9 10 // 发送和回复的请求 11 os = conn.openDataOutputStream(); 12 is = conn.openDataInputStream(); 13 14 // 在此我们使用HTTP 1.0,HTTP 1.1自己还需要处理chunk,比较麻烦 15 String reqStr = 16 "GET https://ebs.95559.com.cn/corporbank/es_logon.jsp HTTP/1.0\r\n" + 17 "Host: ebs.95559.com.cn:443\r\n" + 18 "User-Agent: FelixBrowser\r\n" + 19 "Accept-Charset: utf-8;\r\n" + 20 "Connection: close;\r\n" + 21 "Accept-Language: zh-cn\r\n\r\n"; 22 23 os.write(reqStr.getBytes()); 24 os.flush(); 25 26 System.out.println("Response Stream:"); 27 byte[] buf = new byte[128]; 28 while (true) { 29 int availSize = is.read(buf, 0, buf.length); 30 if (availSize == -1) { 31 break; 32 } 33 System.out.println(new String(buf, 0, availSize)); 34 } 35 } catch (Exception ex) { 36 ex.printStackTrace(); 37 } finally { 38 if (is != null) { 39 try { 40 is.close(); 41 } catch (IOException ex) { 42 ex.printStackTrace(); 43 } 44 } 45 46 if (os != null) { 47 try { 48 os.close(); 49 } catch (IOException ex) { 50 ex.printStackTrace(); 51 } 52 } 53 54 if (conn != null) { 55 try { 56 conn.close(); 57 } catch (IOException ex) { 58 ex.printStackTrace(); 59 } 60 } 61 } 62 |
输出结果:
OK,这就是我们想要的结果。
封装并重构
平时我们用习惯了HttpConnection,对于使用SocketConnection访问HTTP来说,太多的设置和属性拼凑给编码带来了不少麻烦。在完善J2ME-XHTML浏览器时,我将Socket访问HTTP这一块代码封装成一个类SocketHttpConnection,此类继承自HttpConnection,实现了接口方法。
并且,我还构建了一个工厂类,可以通过枚举的方式创建SocketHttpConnection和纯HttpConnection,有工厂创建的类还可以制定是以代理的方式连接还是直连。在此,我将代码贡献出来给大家。下载地址:这里。
几个类之间的关系如下:
使用方法很简单:
1 // 请求地址 2 String url = "https://ebs.95559.com.cn/corporbank/es_logon.jsp"; 3 4 // 连接方式:SocketConnection/HttpConnection 5 byte connType = HttpConnectionFactory.CONNTYPE_SOCKET_HTTP; 6 7 // 是否使用代理及代理地址、端口 8 boolean isUseProxy = true; 9 String proxyHost = "10.0.0.172"; 10 int proxyPort = 80; 11 12 HttpConnection conn = null; 13 InputStream is = null; 14 try { 15 // 调用工厂创建 16 conn = HttpConnectionFactory.getConnection(url, connType, isUseProxy, proxyHost, proxyPort); 17 18 // 像原生HttpConnection一样使用 19 int code = conn.getResponseCode(); 20 System.out.println("Response Code: " + code); 21 22 is = conn.openDataInputStream(); 23 24 System.out.println("Response Stream:"); 25 byte[] buf = new byte[128]; 26 while (true) { 27 int availSize = is.read(buf, 0, buf.length); 28 System.out.println(new String(buf, 0, availSize)); 29 30 if (availSize < buf.length) { 31 break; 32 } 33 } 34 } catch (IOException ex) { 35 ex.printStackTrace(); 36 } 37 |
发表评论
-
什么是WAP网关?
2011-10-17 17:09 10151. 什么是WAP网关? WA ... -
判断用户通过手机访问wap还是电脑直接访问
2011-10-17 16:29 1989首先说最根本的解决 ... -
wap的全面解析!!
2011-10-17 16:29 18121. 开发WAP软件需要哪 ... -
j2me library failed to get library information[转]
2010-12-11 21:59 1167出現過類似問題,我是每次都用的run as...->ru ... -
j2me联网时候对于代理问题可能会出现的错误【转】
2010-12-11 11:30 775众所周知,CMWAP是一个网关,同时又是一个代理服务器,我 ... -
在无线J2ME设备上实现超文本传输协议【转】
2010-12-11 11:27 759随着越来越多手提电 ... -
J2ME使用Socket通过cmwap接入点访问安全HTTPS1 【转】
2010-12-11 11:25 1402这个问题是在我升级J2ME版XHTML浏览器的时候被引入的,我 ... -
J2ME无线联网技术中的HTTP连接[转]
2010-12-11 11:24 862import java.io.ByteArrayOutputS ... -
wml教程 中文手册
2010-12-11 01:02 903http://www.g168.net/txt/wml/ ... -
j2me结合j2ee实现用户登陆功能-2【转】
2010-12-11 00:41 948服务器代码:LoginServlet:package co ... -
j2me结合j2ee实现用户登陆功能【转】
2010-12-11 00:40 847手机客户端代码:LoginForm:package com ... -
独立WAP交友网站趋势分析
2010-12-10 19:28 975从互联网开始,交友网 ... -
什么是WAP?wap技术简介(转)
2010-12-10 19:25 975程序员都在讨论Wireless(无线)技术,也就是常说到的WA ... -
j2me游戏开发:控制飞机移动(转)
2010-12-10 19:01 9131. 飞机plane是一个标准的plane。由三桢画面组成,: ... -
j2me游戏开发:工具类的完善(转)
2010-12-10 19:00 934虽然我们有了midp2.0的支持,但是有时还是需要一些辅助工具 ... -
J2ME程序教程,程序+讲解,很好的入门教程(转载) 【2】
2010-12-10 18:59 724J2ME RPG游戏边学边做(二) 1、public vo ... -
J2ME程序教程,程序+讲解,很好的入门教程(转载) 【1】
2010-12-10 18:58 1120J2ME RPG游戏边学边做(一) 笔者以前是做j2ee的 ... -
J2ME内存优化(转载)
2010-12-10 18:58 873Out momory 一阵天旋地转 ... -
PngMate使用教程2(转)
2010-12-10 18:57 864下面我们来换一张图片,街头霸王Ken,这张gif的帧数比较多, ... -
PngMate使用教程1(转)
2010-12-10 18:56 1311PngMate使用教程 JAVA手机网[www.cnjm.n ...
相关推荐
使用Socket的一个好处是可以避免为每个网络请求建立单独的Connection。并且因为socket的inputStream, outputStream是双工的方式工作,所以可以连续的发送网络请求而不必等待网络回应。 原文发布在:...
压缩包中的"在J2ME中使用Socket通过cmwap接入点访问安全HTTPS.pdf"文档很可能提供了一个详细的步骤指南,涵盖了以上所述的各个方面。它可能包括了代码示例、配置步骤和可能遇到的问题及其解决方案。对于想要在J2ME...
本文将深入探讨 J2ME 中的 Socket 编程及其相关知识点。 ### 1. J2ME 的 Socket API J2ME 提供了 `javax.microedition.io.Connector` 类来创建和管理 Socket 连接。`Connector` 类提供了静态方法 `newSocket()`,...
在 J2ME 中进行 Socket 编程是实现设备间网络通信的基础,允许应用程序通过 TCP/IP 协议发送和接收数据。下面将详细探讨 J2ME 中的 Socket 编程知识点。 1. **Socket 概念**: - Socket 是网络通信中的一个端点,...
在这个场景中,我们关注的是J2ME如何实现自动连接到互联网,无论是通过CMWAP还是CMNET这两种常见的GPRS(General Packet Radio Service)接入点。 CMWAP和CMNET是中国移动提供的两种不同的网络接入方式。CMWAP主要...
J2ME 的socket通信源码,经过本人的整理能真正运行的源码
在IT行业中,J2ME(Java 2 Micro Edition)是一种专为嵌入式设备和移动设备设计的Java平台。它提供了轻量级的框架来开发应用程序,尤其在早期的智能...通过熟练掌握这些知识点,开发者能够构建可靠的J2ME图片上传功能。
在Java 2 Micro Edition (J2ME)平台上,Socket通信是一种基础的网络连接方式,用于设备间的数据传输。本主题将深入探讨如何使用J2ME的Socket接口来实现图片的下载功能。首先,我们需要理解Socket的基本概念。 ...
这是基于j2me的socket网络聊天室的详细代码
在 J2ME 中,Socket 编程是实现客户端-服务器通信的一种常见方式,它允许应用程序通过网络发送和接收数据。本项目 "j2me socket 服务端与 客户端聊天" 展示了如何利用 Socket 技术创建一个简单的聊天应用,使手机...
在J2ME中,可以使用`java.net.Socket`类创建一个套接字,与服务器建立连接,并通过输入输出流进行数据的读写。对于HTTP请求,通常先建立Socket连接,然后发送HTTP头和请求体,最后接收服务器响应。 描述中提到的...
**J2ME API 2.0 - J2ME使用手册 - J2ME帮助文档** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专为资源有限的设备如移动电话、智能手表和家用电器等设计。J2ME API 2.0 提供了在这些小型设备上开发应用...
基于J2ME的Socket网络通信加密技术研究,张宇敏,杨杰,随着3G技术的高速发展,手机上网已经成为一种时尚,使用手机上网的人逐渐增多,而手机网络安全问题也随之而来,自然手机通信的安�
J2ME(Java 2 Micro Edition)作为Java平台的一个分支,专为资源受限的设备(如早期的移动电话和PDA)设计,提供了MIDP(Mobile Information Device Profile)等配置文件,允许开发者在这些设备上开发和部署应用程序...
本文将深入探讨如何使用J2ME构建基于Socket通信的客户服务系统,并结合MySQL数据库驱动进行数据存储和检索。 首先,让我们了解J2ME的基础。J2ME由一组配置和 profiles 组成,如MIDP(Mobile Information Device ...
在安全方面,教程也将触及SSL/TLS(Secure Sockets Layer/Transport Layer Security)的使用,以保护通过Socket传输的数据不被窃取或篡改。这在当今隐私和安全问题日益突出的时代尤其重要。 最后,郭克华老师还会...
J2ME通常用于移动设备和嵌入式系统,它的网络支持相对较弱,但依然可以使用javax.microedition.io.Connector类来创建SOCKET连接。以下是一个简单的J2ME客户端示例: ```java import javax.microedition.io....
**J2ME 使用环境配置详解** Java 2 Micro Edition(J2ME)是Java平台的一个重要组成部分,主要用于开发和运行移动设备、嵌入式设备以及消费电子产品的应用程序。本篇文章将详细阐述如何配置J2ME的开发环境,以便...