首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

小弟我来猜想CMWAP的对请求的处理方式

2012-08-29 
我来猜想CMWAP的对请求的处理方式。众所周知,CMWAP是一个网关,同时又是一个代理服务器,我们只知道J2ME这样

我来猜想CMWAP的对请求的处理方式。

众所周知,CMWAP是一个网关,同时又是一个代理服务器,我们只知道

J2ME这样写是没有问题的

假设我请求的地址是http://www.uc.cn/a.do?url=http://www.iteye.com

?

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 内部错误。
?
具体大家可以编写想过的代码试试

1 楼 wuhua 2009-05-16   JAVA的编辑器对代码的排版效果很差劲,而且Opera不能使用。

热点排行