- 浏览: 602820 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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】
众所周知,CMWAP是一个网关,同时又是一个代理服务器,我们只知道
J2ME这样写是没有问题的
假设我请求的地址是http://www.uc.cn/a.do?url=http://www.iteye.com
- httpConn = (HttpConnection) Connector.open(Common.stringAppend("http://10.0.0.172
- a.do?url=http://www.iteye.com", 3, true);
- if (aProxy != null) {
- httpConn.setRequestProperty("X-Online-Host", "www.uc.cn);
- }
httpConn = (HttpConnection) Connector.open(Common.stringAppend("http://10.0.0.172
/a.do?url=http://www.iteye.com", 3, true);
if (aProxy != null) {
httpConn.setRequestProperty("X-Online-Host", "www.uc.cn);
}
这样写,对于WTK,Nokia S40的处理机制。他们转换成Soket后是这么写的
- SocketConnection socket =
- (SocketConnection) javax.microedition.io.Connector.open("socket://10.0.0.172:80");
- OutputStream os = socket.openOutputStream();
- os.write(toByte("GET /a.do?url=http://www.iteye.com HTTP/1.1\r\n"));
- os.write(toByte("Host: 10.0.0.172\r\n"));
- os.write(toByte("X-Online-Host: www.uc.cn\r\n\r\n"));
SocketConnection socket =
(SocketConnection) javax.microedition.io.Connector.open("socket://10.0.0.172:80");
OutputStream os = socket.openOutputStream();
os.write(toByte("GET /a.do?url=http://www.iteye.com HTTP/1.1\r\n"));
os.write(toByte("Host: 10.0.0.172\r\n"));
os.write(toByte("X-Online-Host: www.uc.cn\r\n\r\n"));
网关对上面写法的处理并不能达到你的期望。
对于Socket层来说,我们应该处理成一个标准的代理方式,只有这样,才能达到我们期望的结果。
- SocketConnection socket =
- (SocketConnection) javax.microedition.io.Connector.open("socket://10.0.0.172:80");
- OutputStream os = socket.openOutputStream();
- os.write(toByte("GET http://10.0.0.172/a.do?url=http://www.iteye.com HTTP/1.1\r\n"));
- os.write(toByte("Host: 10.0.0.172\r\n"));
- os.write(toByte("X-Online-Host: www.uc.cn\r\n\r\n"));
SocketConnection socket =
(SocketConnection) javax.microedition.io.Connector.open("socket://10.0.0.172:80");
OutputStream os = socket.openOutputStream();
os.write(toByte("GET http://10.0.0.172/a.do?url=http://www.iteye.com HTTP/1.1\r\n"));
os.write(toByte("Host: 10.0.0.172\r\n"));
os.write(toByte("X-Online-Host: www.uc.cn\r\n\r\n"));
这样写,就能达到我们想要的结果,而且这也是代理服务器的标准写法。
从上面的一些数据分析,我猜想移动网关的处理方式是:
我们以http://10.0.0.172/a.do?url=http://www.uc.cn/ 的方式进行处理
处理步骤
1. 获取host字段,J2ME的HttpConnection send header是host: 10.0.0.172,
那么移动先分析此字段。
2. 如果Host字段是10.0.0.172, 那么会去查找X-Online-Host字段,并且代理发送的时候把Host植替换成X-Online-Host的植,
如果非10.0.0.172,则直接走HTTP标准的代理方式。
3. 如果Host字段是10.0.0.172, CMWAP还会分析URI(/a.do?url=http://www.uc.cn/)。如果你的URI里面带有http://关键字的话
那么问题就会出现了,它会认为http://是host具备的字段,因此它会分析http://www.uc.cn并且把host后面的字符传当成URI。
最终导致了你请求以http://10.0.0.172/a.do?url=http://www.uc.cn/ 变成了请求以http://10.0.0.172/了,服务一般会return
500 内部错误。
具体大家可以编写想过的代码试试
发表评论
-
什么是WAP网关?
2011-10-17 17:09 9821. 什么是WAP网关? WA ... -
判断用户通过手机访问wap还是电脑直接访问
2011-10-17 16:29 1942首先说最根本的解决 ... -
wap的全面解析!!
2011-10-17 16:29 16731. 开发WAP软件需要哪 ... -
j2me library failed to get library information[转]
2010-12-11 21:59 1101出現過類似問題,我是每次都用的run as...->ru ... -
在无线J2ME设备上实现超文本传输协议【转】
2010-12-11 11:27 728随着越来越多手提电 ... -
J2ME使用Socket通过cmwap接入点访问安全HTTPS 2【转】
2010-12-11 11:26 1212新建一个Midp应用程序,在startApp中加入以下代码: ... -
J2ME使用Socket通过cmwap接入点访问安全HTTPS1 【转】
2010-12-11 11:25 1359这个问题是在我升级J2ME版XHTML浏览器的时候被引入的,我 ... -
J2ME无线联网技术中的HTTP连接[转]
2010-12-11 11:24 831import java.io.ByteArrayOutputS ... -
wml教程 中文手册
2010-12-11 01:02 837http://www.g168.net/txt/wml/ ... -
j2me结合j2ee实现用户登陆功能-2【转】
2010-12-11 00:41 917服务器代码:LoginServlet:package co ... -
j2me结合j2ee实现用户登陆功能【转】
2010-12-11 00:40 811手机客户端代码:LoginForm:package com ... -
独立WAP交友网站趋势分析
2010-12-10 19:28 921从互联网开始,交友网 ... -
什么是WAP?wap技术简介(转)
2010-12-10 19:25 937程序员都在讨论Wireless(无线)技术,也就是常说到的WA ... -
j2me游戏开发:控制飞机移动(转)
2010-12-10 19:01 8581. 飞机plane是一个标准的plane。由三桢画面组成,: ... -
j2me游戏开发:工具类的完善(转)
2010-12-10 19:00 884虽然我们有了midp2.0的支持,但是有时还是需要一些辅助工具 ... -
J2ME程序教程,程序+讲解,很好的入门教程(转载) 【2】
2010-12-10 18:59 685J2ME RPG游戏边学边做(二) 1、public vo ... -
J2ME程序教程,程序+讲解,很好的入门教程(转载) 【1】
2010-12-10 18:58 1085J2ME RPG游戏边学边做(一) 笔者以前是做j2ee的 ... -
J2ME内存优化(转载)
2010-12-10 18:58 837Out momory 一阵天旋地转 ... -
PngMate使用教程2(转)
2010-12-10 18:57 826下面我们来换一张图片,街头霸王Ken,这张gif的帧数比较多, ... -
PngMate使用教程1(转)
2010-12-10 18:56 1258PngMate使用教程 JAVA手机网[www.cnjm.n ...
相关推荐
j2me 不同运营商移动,电信,联通联网方案
J2ME通用进度条,解决联网、线程操作等候问题
j2me框架_用J2ME的通用联网框架开发联网.pdf
J2ME开发 J2ME开发 J2ME开发 J2ME开发
J2ME API J2ME API J2ME API J2ME API J2ME API
J2ME相关资源,介绍J2ME的相关基础知识,图片加载、网络连接问题、进度条相关问题
音乐的控制,rms的操作类,java字符串解析 将字符串解析成字符数组,java进度条实例模板,j2me中将对象转换成字节数组的方法,j2me联网测试,j2me多线程的应用实例,j2me Socket通信例子 客户端,服务器端
j2me手机基于服务器的网络象棋游戏源代码
J2ME游戏开发 J2ME游戏开发 J2ME游戏开发
J2ME培训教程,以前学JJ2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程J2ME培训教程2ME发的一个PPT,内容还可以,需要的朋友不要客气J2ME...
j2me入门教程j2me入门教程j2me入门教程j2me入门教程j2me入门教程
j2me手机浏览器 j2me手机浏览器 j2me手机浏览器
j2ME初学Demo j2ME demo j2me demo j2ME实例
J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏
本教程首先介绍了 j2me 开发体系,然后深入各个MIDP2.0 API,最后是搭建平台的知识。 第一章 “J2ME 技术概述”让你在学习J2ME 以前知道什么是J2ME。本章介绍了J2ME 平 台的体系结构和MIDlet 生命周期的概念。为以后...
J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏
这是解决j2me不能调试的问题。在做移动开发时所遇到的问题,根据此文件就可以解决问题!
解决J2ME开发中的连续按键问题 解决J2ME开发中的连续按键问题
整数到字节数组的转换 字节数组到整数的转换
j2me教程j2me教程j2me教程j2me教程