- 浏览: 604235 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 9841. 什么是WAP网关? WA ... -
判断用户通过手机访问wap还是电脑直接访问
2011-10-17 16:29 1943首先说最根本的解决 ... -
wap的全面解析!!
2011-10-17 16:29 16771. 开发WAP软件需要哪 ... -
j2me library failed to get library information[转]
2010-12-11 21:59 1102出現過類似問題,我是每次都用的run as...->ru ... -
j2me联网时候对于代理问题可能会出现的错误【转】
2010-12-11 11:30 745众所周知,CMWAP是一个网关,同时又是一个代理服务器,我 ... -
在无线J2ME设备上实现超文本传输协议【转】
2010-12-11 11:27 731随着越来越多手提电 ... -
J2ME使用Socket通过cmwap接入点访问安全HTTPS1 【转】
2010-12-11 11:25 1365这个问题是在我升级J2ME版XHTML浏览器的时候被引入的,我 ... -
J2ME无线联网技术中的HTTP连接[转]
2010-12-11 11:24 831import java.io.ByteArrayOutputS ... -
wml教程 中文手册
2010-12-11 01:02 839http://www.g168.net/txt/wml/ ... -
j2me结合j2ee实现用户登陆功能-2【转】
2010-12-11 00:41 921服务器代码:LoginServlet:package co ... -
j2me结合j2ee实现用户登陆功能【转】
2010-12-11 00:40 814手机客户端代码:LoginForm:package com ... -
独立WAP交友网站趋势分析
2010-12-10 19:28 923从互联网开始,交友网 ... -
什么是WAP?wap技术简介(转)
2010-12-10 19:25 937程序员都在讨论Wireless(无线)技术,也就是常说到的WA ... -
j2me游戏开发:控制飞机移动(转)
2010-12-10 19:01 8621. 飞机plane是一个标准的plane。由三桢画面组成,: ... -
j2me游戏开发:工具类的完善(转)
2010-12-10 19:00 888虽然我们有了midp2.0的支持,但是有时还是需要一些辅助工具 ... -
J2ME程序教程,程序+讲解,很好的入门教程(转载) 【2】
2010-12-10 18:59 686J2ME RPG游戏边学边做(二) 1、public vo ... -
J2ME程序教程,程序+讲解,很好的入门教程(转载) 【1】
2010-12-10 18:58 1089J2ME RPG游戏边学边做(一) 笔者以前是做j2ee的 ... -
J2ME内存优化(转载)
2010-12-10 18:58 840Out momory 一阵天旋地转 ... -
PngMate使用教程2(转)
2010-12-10 18:57 830下面我们来换一张图片,街头霸王Ken,这张gif的帧数比较多, ... -
PngMate使用教程1(转)
2010-12-10 18:56 1261PngMate使用教程 JAVA手机网[www.cnjm.n ...
相关推荐
使用Socket的一个好处是可以避免为每个网络请求建立单独的Connection。并且因为socket的inputStream, outputStream是双工的方式工作,所以可以连续的发送网络请求而不必等待网络回应。 原文发布在:...
j2me使用udp的简单连接源码 server与Client的连接
介绍了J2ME中使用Socket进行网络连接
J2ME的SOCKET编程技术学习的代码
j2me socket 图片上传j2me socket 图片上传j2me socket 图片上传j2me socket 图片上传
J2ME 的socket通信源码,经过本人的整理能真正运行的源码
这是基于j2me的socket网络聊天室的详细代码
简单实通信功能,但是真机很少支持,希望和大家多多交流
基于J2ME的Socket网络通信加密技术研究,张宇敏,杨杰,随着3G技术的高速发展,手机上网已经成为一种时尚,使用手机上网的人逐渐增多,而手机网络安全问题也随之而来,自然手机通信的安�
J2ME API J2ME API J2ME API J2ME API J2ME API
j2me socket方式下载图片,附带源码工程 注释
J2ME开发 J2ME开发 J2ME开发 J2ME开发
用J2ME与ASP建立数据库连接 J2ME是利用HttpConnection建立HTTP连接,然后获取数据,ASP也是利用HTTP协议,因而可以利用J2ME与ASP建立连接,从而访问数据库。
J2me RMS存储 网络连接 详解 PDF文档 自制目录
j2me点阵字库,适合j2me游戏的一个很小的字库
J2ME自动获取网络连接的方法,非常智能,而且代码编写很好。
J2ME用户使用手册(PDF) J2ME用户使用手册(PDF)
j2me客户服务 基于socket + mysql驱动
基于J2ME开发的聊天程序,使用socket,可与J2SE的程序连接,本人毕业设计的一部分,给做毕设的同学借鉴借鉴