我来猜想CMWAP的对请求的处理方式。 【转】
来源:互联网 发布:美股网络券商排名 编辑:程序博客网 时间:2024/04/29 19:37
众所周知,CMWAP是一个网关,同时又是一个代理服务器,我们只知道
J2ME这样写是没有问题的
假设我请求的地址是http://www.uc.cn/a.do?url=http://www.javaeye.com
- httpConn = (HttpConnection) Connector.open(Common.stringAppend("http://10.0.0.172
- a.do?url=http://www.javaeye.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.javaeye.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.javaeye.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 内部错误。
具体大家可以编写想过的代码试试
- 我来猜想CMWAP的对请求的处理方式。
- 我来猜想CMWAP的对请求的处理方式。 【转】
- 我对IM未来发展趋势的猜想
- ASP.NET Routing对请求的处理方式
- ajax之get方式请求对特殊字符的处理
- 对请求统一设置编码来处理中文乱码时的注意事项
- 我读《通过Go来处理每分钟达百万的数据请求》
- 对Tineye搜索引擎的猜想
- 1007 素数对的猜想
- 我猜想的博客特性
- 我对RFID系统安全的认识与大数据对解决安全隐患的猜想
- ASIHTTPRequest实现对PUT,DELETE,POST,GET请求方式的处理
- 服务器端我们通过一个 Servlet 来处理来自客户端的请求,并对客户端作出响应。其核心处理代码
- linux对块设备的请求处理
- ASP.NET对请求处理的过程
- ASP.NET对请求处理的过程
- ASP.NET对请求处理的过程:
- 服务器端对请求的一些处理
- 80后凭栏碎念青春阑珊
- [MSSQL]T-SQL 字符串前加 N 是什么意思
- 又是一年落叶黄
- windows 安装mysql出现 could not start the service mysql error:0 错误处理
- Euclid Problem-ACM
- 我来猜想CMWAP的对请求的处理方式。 【转】
- Updatepanel的renderModel
- 在J2ME开发中获取系统属性
- 新装ORACLE 10g乱码解决方案
- 螺旋队列算法分析
- ASP.NET Google Maps Javascript API V3 实战基础篇一自定义控件示例
- 如何隐藏滚动条?IE去掉滚动条HTML代码
- 欢迎来到我的博客哦。呵呵
- 对馆藏档案数字化风险及目录数据库与图像数据库挂接等问题的认识