众所周知,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 内部错误。
具体大家可以编写想过的代码试试
分享到:
相关推荐
从某种意义上来说,"哥德巴赫猜想验证(用C#来编写的应用程序)"不仅仅是一个验证猜想的工具,它还是一个展示如何将计算机科学应用于数学问题,特别是对于未解决数学问题的探索的例子。这个项目为程序员提供了一个学习...
本资料包“Matlab在数论研究中的应用——用Matlab验证哥德巴赫猜想与孪生素数猜想”将介绍如何利用Matlab来探讨这两个猜想。 哥德巴赫猜想,由18世纪的普鲁士数学家克里斯蒂安·哥德巴赫提出,被誉为数学界的“皇冠...
这个猜想是数学史上著名的悬而未决的问题之一,尽管已经有许多数学家尝试从不同的角度来证明它,但到目前为止,还没有人给出一个被普遍接受的证明。 哥德巴赫猜想在数学史上的重要性不仅在于其本身的陈述简单,还...
在"5歌德巴赫猜想"的程序中,开发者可能使用了以下步骤来实现哥德巴赫猜想的验证: 1. **输入处理**:程序首先需要获取一个大于2的偶数作为输入。这可以通过用户界面或者命令行参数实现。 2. **质数判断**:为了...
### 哥德巴赫猜想与Python实现 #### 哥德巴赫猜想简介 哥德巴赫猜想是数学中的一个未解决的问题,由克里斯蒂安·哥德巴赫于1742年提出。...未来的研究可能会发现更高效、更简洁的方式来验证这一著名的数学猜想。
描述中提到的"哥德巴赫猜想VB代码及窗体工程文件"很可能就是一个简单的VB应用程序,用于演示如何通过编程方法来验证哥德巴赫猜想。不过,它指出在计算1000以上的素数时存在问题,这可能意味着程序的效率不高,或者在...
文章引用了陈景润的工作,他是中国数学家,对哥德巴赫猜想的研究做出了重大贡献。陈景润证明了“1+2”形式,即每个大于2的偶数可以表示为一个质数和不超过两个质数的乘积。这一结果是向哥德巴赫猜想迈进的重要一步,...
利用MATLAB,研究者能够实现高效的算法来寻找并验证素数对,即使面对非常大的偶数,也可以通过并行计算和优化算法来加快验证的速度。 MATLAB还提供丰富的工具箱(Toolbox),这些工具箱集成了特定领域的专业算法和...
哥德巴赫猜想是数论领域的一个著名未解决问题,由18世纪的普鲁士数学家克里斯蒂安·哥德巴赫提出。这个猜想简单来说就是:任何大于2的偶数...尽管这个猜想至今未被证明,但这并不妨碍我们用编程的方式来探索和验证它。
标题中的"C++代码 角谷猜想计算过程"指的是利用C++编程语言实现角谷猜想的算法。角谷猜想,也称为“冰雹序列”或“3n+1猜想”,是由日本数学家角谷静夫提出的一个未解问题。这个猜想是这样的:对于任意一个正整数n,...
从关于偶数的哥德巴赫猜想,可推出:...若关于偶数的哥德巴赫猜想是对的,则关于奇数的哥德巴赫猜想也会是对的。2013年5月,巴黎高等师范学院研究员哈洛德·贺欧夫各特发表了两篇论文,宣布彻底证明了弱哥德巴赫猜想。
在这个项目中,通过分布式计算的方式,将验证黎曼猜想的任务分解到全球各地的计算机上,每个计算机处理一小部分计算任务,最终汇总结果,以期望能够证实或证伪这一猜想。 压缩包中的文件名暗示了项目实现的具体步骤...
这通常可以通过设置一个计数器并以每次增加2的方式递增来实现。例如,我们可以定义一个变量`counter`,初始值设为4,并在每一轮循环后将其加2。在循环内部,我们将进行质数检测。 质数检测是程序的关键部分。我们...
本文的作者罗贵文和许作铭通过改进的埃塔筛法,对歌德巴赫猜想进行了初等证明,这是对哥德巴赫猜想研究的新进展。 埃塔筛法是一种有效的素数筛选方法,它使用了多个“埃塔函数”来筛选素数。在数论中,筛法是用来...
歌德巴赫猜想是数学领域的一个著名未解决问题,它指出每一个大于6的偶数都可以表示为两个素数(质数)之和。本题要求使用C++编程验证这一猜想。以下是一个简化的验证过程: 首先,我们需要编写一个函数来判断一个数...
如果没有找到,则表明该数无法按哥德巴赫猜想的方式分解。 这个名为"哥德巴赫猜想.cpp"的文件就是实现了上述逻辑的C语言源代码。对于大一新生来说,理解和编写这样的程序能够帮助他们巩固C语言的基础知识,同时对...
在IT领域,尤其是在数学和计算机科学的交叉部分,哥赫巴德猜想(Catalan's Conjecture)是一个著名的数论问题,而“强哥赫巴德猜想”可能是对原猜想的一个扩展或变种。本代码是针对这个猜想进行穷举法验证的一种尝试...
**哥德巴赫猜想**是数学领域中著名的未解决问题之一,源自18世纪由普鲁士数学家克里斯蒂安·哥德巴赫提出的...虽然这个软件无法解决哥德巴赫猜想的理论问题,但它为公众提供了一个直观的方式去探索这个古老的数学谜题。
至今,尽管经过众多数学家的努力,但仍未找到一个通用的数学公式或方法来证明这一猜想。 在编程世界中,我们可以通过编写代码来验证哥德巴赫猜想,虽然这不能作为正式的证明,但可以作为一个实验性的验证手段。代码...