J2ME使用Socket通过cmwap接入点访问安全HTTPS

发表于:2009-8-28 10:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

#
java

  这个问题是在我升级J2ME版XHTML浏览器的时候被引入的,我尝试了很多方法、发了很多帖子、问了很多人都没有找到可行的解决方案。最后我在PC上通用OTA连接方式使用WireShark拦截数据包才解决了问题,接下来我和大家分享一下解决问题的过程。

  所涉及的知识点:

  1、如何使用J2ME连接cmwap代理

  2、基于安全套接字的HTTPS

  尝试方法一:

  新建一个Midlet应用程序,在StartApp方法中加入如下代码:

  1 HttpConnection conn = null;
  2 InputStream is = null;
  3 try {
  4 // url: https://ebs.95559.com.cn/corporbank/es_logon.jsp
  5 conn = (HttpConnection) Connector.open(" http://10.0.0.172:80/corporbank/es_logon.jsp", Connector.READ, true);
  6 String host = "ebs.95559.com.cn";
  7 conn.setRequestProperty("x-online-host", host);
  8 conn.setRequestMethod(HttpConnection.GET);
  9
  10 int code = conn.getResponseCode();
  11 System.out.println("Response Code: " + code);
  12
  13 is = conn.openDataInputStream();
  14
  15 System.out.println("Response Stream:");
  16 byte[] buf = new byte[128];
  17 while (true) {
  18 int availSize = is.read(buf, 0, buf.length);
  19 if (availSize == -1) {
  20 break;
  21 }
  22 System.out.println(new String(buf, 0, availSize));
  23 }
  24 } catch (Exception ex) {
  25 ex.printStackTrace();
  26 } finally {
  27 if (is != null) {
  28 try {
  29 is.close();
  30 } catch (IOException ex) {
  31 ex.printStackTrace();
  32 }
  33 }
  34
  35 if (conn != null) {
  36 try {
  37 conn.close();
  38 } catch (IOException ex) {
  39 ex.printStackTrace();
  40 }
  41 }
  42 }

  此代码的作用是:使用cmwap代理,请求我们制定的页面,并在控制台中输出返回的状态码及内容。很显然,这是一种普通的cmwap连接方式,并没有考虑https因素的加入,输出的结果也在意料之内:

  Response Code: 502
  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>Connection to host failed. Check your settings and try again. If the pro
  blem persists contact your operator.</p></card></wml>

  原因分析:我们要请求的是安全HTTP,端口443,而在我们的代码中并没有体现出我们要连接HTTPS的意图,我们只是告诉了cmwap代理我们要连接地址“ebs.95559.com.cn/corporbank/es_logon.jsp”,而并没有告诉cmwap代理我们所要访问的地址是基于HTTPS的,所以cmwap代理会按照地址“http://ebs.95559.com.cn/corporbank/es_logon.jsp”去连接,恰好这个地址是不支持HTTP:80的,cmwap代理返回了网关错误。

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号