尝试方法二:
针对以上设想,我们将代码修改一下,想方设法让cmwap代理知道我们要访问的目标地址属于HTTPS:443。
修改程序的第6行,使其变成:
String host = "ebs.95559.com.cn:443";
运行,控制台还是输出了以下错误:
Response Code: 500 Response Stream: <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" http://www.wapforum.org/DTD/wml_1.1.xml> <wml><card> <p><do type="prev" name="Back" label="Back"><prev/></do>Your request for a service could not be fulfilled. Please try again or c ontact your operator if the problem persists. </p></card></wml> |
原因分析:不详。
尝试方法三:
以上两种方法都行不通,有没有可能cmwap代理服务器开通了SSL端口,来让应用程序通过此端口来访问HTTPS呢?
将代码第5行修改如下:
conn = (HttpConnection) Connector.open(https://10.0.0.172:443/corporbank/es_logon.jsp, Connector.READ, true);
模拟器长时间没有响应。
原因分析:一般手机自带的浏览器都支持访问HTTPS,而手机设置的cmwap代理地址都是10.0.0.172:80。所以可以肯定的是手机是可以通过10.0.0.172:80这个代理访问HTTPS而并不是10.0.0.172:443。上网查了资料,证明移动针对cmwap代理只开通了80 端口,而并没有开通443端口。
尝试方法四(成功):
经过了以上三次失败,我不得不好好静下心来想想解决方法。我想到了使用OTA的方式,让PC连接到GPRS上进行调试。首先使用数据线连接电脑和手机,将电脑的本地连接禁用,把手机当猫用,创建基于手机拨号的网络连接,输入号码“*99#”,拨号,连接。给浏览器设置好代理 10.0.0.172:80后,能够正常浏览HTTPS地址。我忽然想到,既然HttpConnection不能够正常通过cmwap连接HTTPS,那我使用Socket模拟HTTP请求能成功吗?带着这个疑问,我开始进行准备:
必备工具:
Wireshark或HttpWatch或Openware Simulator
最开始我是使用Firefox+Wireshark拦截80端口的包的,但是浏览器向服务器发出SSL Hello后传输的内容都会被加密,Wireshark所看到的都是密文,相当的不方便。如图: