众所周知,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);
}
这样写,对于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"));
网关对上面写法的处理并不能达到你的期望。
对于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"));
这样写,就能达到我们想要的结果,而且这也是代理服务器的标准写法。
从上面的一些数据分析,我猜想移动网关的处理方式是:
我们以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 内部错误。
具体大家可以编写想过的代码试试
分享到:
相关推荐
从关于偶数的哥德巴赫猜想,可推出:...若关于偶数的哥德巴赫猜想是对的,则关于奇数的哥德巴赫猜想也会是对的。2013年5月,巴黎高等师范学院研究员哈洛德·贺欧夫各特发表了两篇论文,宣布彻底证明了弱哥德巴赫猜想。
谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。程序要求输入一个...
我们讨论了字符串沼泽地猜想对后期宇宙学的宇宙学意义,并针对广泛的最新宇宙学观测进行了测试。 改进的de Sitter猜想约束最小斜率或标量势的曲率,并且取决于两个无量纲的常数。 对于大小为1或更大的常数,观测值...
1157:哥德巴赫猜想 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 14300 通过数: 8298 【题目描述】 哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和。编程将6~100所有偶数表示成两个素数之和。 【输入...
最古老的哥德巴赫猜想(“每个甚至严格大于4的正整数都是两个质数之和”)自1742年以来一直没有得到证明。... 本文包含该证明的明确的其他补充内容,并坚持甚至将正整数作为素数对之和的戈德巴赫表示形式的存在和数目。
自己写的 关于哥德巴赫猜想验证,只要输入一个 数字 ,就能验证输入数及所有小于输入数的数是否符合哥德巴赫猜想,有较好算法,以100W为例,运行时间只需40几秒(程序包含运行时间的计算)
哥德巴赫猜想\哥德巴赫猜想 C++验证源码
用java验证哥德巴赫猜想,输出满足哥德巴赫猜想的所以值
角谷猜想c语言设计很好很简洁哦,不信你就看一下。在C语言广阔的空间下。简洁就是效率!
C语言 素数对
C语言源码哥德巴赫猜想,界面不错,验证哥德巴赫猜想,大一新生必备
个人整理的哥德巴赫猜想论文,帮助对解析数论感兴趣的人学习
Matlab在数论研究中的应用——用Matlab验证哥德巴赫猜想与孪生素数猜想
哥德巴赫猜想.cpp
VB 验证歌德巴赫猜想 VB 验证歌德巴赫猜想
在这项工作中,我们表明,实际上,如果我们正确地理解了这个猜想,并且与另一个沼泽猜想(即所谓的距离猜想)相关,那么我们就有了一种潜在的缓慢滚动充气机制,并且我们认为这里的微调不是 一个技术问题。
20210824-中银国际-房地产行业:对首次集中供地的深度分析与对后续的“七点猜想”.pdf
1.编程验证歌德巴赫猜想,任何大于6的偶数可以表示为两素数之和,如10=3+7; 2.给出任意两个日期,编程计算它们相距的天数<提示:可以设定一个参照日期如1980年的1月1日,然后分别求两个日期与它之间相距的天数的差>...
基于MATLAB软件的哥德巴赫猜想猜想实现
输入一个自然数,通过角谷猜想,把得到得到1的过程输出(我是菜鸟,做的不好大神勿喷) 。