文档章节

android下实现WAP和NET的自适应

7
 7潜伏7
发布于 2014/04/17 11:49
字数 1424
阅读 11
收藏 0

WAP和NET的区别:
(1) 为什么会有两个接入点?
  在国际上,通常只有一种GPRS接入方式,为什么在中国会有CMWAP和CMNET两兄弟呢?(彩信之所以单独配置接入点是因为彩信服务需要连接专用的服务器,在这里不作探讨。)
  其实,CMWAP 和 CMNET 只是中国移动人为划分的两个GPRS接入方式。前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务。它们在 实现方式上并没有任何差别,但因为定位不同,所以和CMNET相比,CMWAP便有了部分限制,资费上也存在差别。
  (2) 什么是WAP?
  WAP只是一种GPRS应用模式,它与GRPS的接入方式是无关的。WAP应用采用的实现方式是“终端+WAP网关+WAP服务器”的模式,不同于一 般Internet的“终端+服务器”的工作模式。主要的目的是通过WAP网关完成WAP-WEB的协议转换以达到节省网络流量和兼容现有WEB应用的目 的。
  WAP网关从技术的角度讲,只是一个提供DaiLi服务的主机,它不一定由网络运营商提供。但据我所知,中国移动GPRS网络目前只有唯一的一个 WAP网关:10.0.0.172,有中国移动提供,用于WAP浏览(HTTP)服务。有一点需要注意,WAP网关和一般意义上的局域网网关是有差别的, 标准的WAP网关仅仅实现了HTTPDaiLi的功能,并未完成路由、NAT等局域网网关的功能。这就决定了它在应用上所受到的限制。
  (3) 中国移动对CMWAP的限制
  为了从应用中区别两者的定位,中国移动对CMWAP作了一定的限制,主要表现在CMWAP接入时只能访问GPRS网络内的IP(10.*.*.*), 而无法通过路由访问Internet。(少数地区的移动网络可能不存在这一限制。)我们用CMWAP浏览Internet上的网页就是通过WAP网关协议 或它提供的HTTPDaiLi服务实现的。
  说到这里,就让我自然而然的联想到公司的网络,相信不少工作的朋友都有类似的体会。公司的网络在网关上不提供路由和NAT,仅仅提供一个可以访问外网 的HTTPDaiLi。这样,我们就无法直接使用QQ、MSN等非HTTP协议的应用软件了(好在它们还提供的有HTTPDaiLi的连接方式)。 CMWAP也正是如此。
  (4) 适用范围
  适用范围才是大家最关心的问题。CMNET拥有完全的Internet访问权,这里就不多说了,主要让我们来看看CMWAP。因为有了上面提到的限 制,CMWAP的适用范围就要看WAP网关所提供的支持了。目前,中国移动的WAP网关对外只提供HTTPDaiLi协议(80和8080端口)和WAP 网关协议(9201端口)。
  因此,只有满足以下两个条件的应用才能在中国移动的CMWAP接入方式下正常工作:
  1. 应用程序的网络请求基于HTTP协议。
  2. 应用程序支持HTTPDaiLi协议或WAP网关协议。
  如何辨别一个应用程序的网络请求是否基于HTTP协议?
  这个问题还真不好回答,要完全做到这一点需要通过拦截应用程序的通信数据包进行分析。这里提供几个简单的方法给广大菜鸟朋友:从表现上看,如果它的网 络请求是网址(URL)的形式,那么通常是基于HTTP协议的,如Web浏览器;如果它连接的服务器端口是80,那么它可能是基于HTTP协议的。如果确 实无法准确判断,那么请直接看下一个条件。(满足第二个条件的应用一定是基于HTTP协议的)
  如何区别一个应用程序支持HTTPDaiLi协议还是WAP网关协议呢?
  首先看它的设置中有没有DaiLi服务器的选项(通常在S60上未特别说明的DaiLi都是特指HTTPDaiLi),如果有则表示它支持HTTPDaiLi协议。如果没有,则需要按照以下步骤测试:
  在GPRS接入点设置的高级设置里去掉DaiLi服务器的设置项:Server Address 和 Server Port,如果应用程序可以正常工作,那么它是基于WAP网关协议,如Java程序、S60内置的浏览器。如果在此状态下不能正常工作,而恢复GPRS接 入点高级设置中的DaiLi服务器设置后能够正常工作,则应用程序支持HTTPDaiLi协议(DaiLi设置从系统中读取)。如果仍不能正常工作,那么 这个应用程序一般来说是不支持HTTPDaiLi协议或WAP网关协议的。

 

 

package com.aoran.util;

import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.URL;

/**
 *  下载器
 */
public class DownloadUtil {
 private static final String TAG = "Downloader";

 /**
  * @return InputStream 下载
  */
 public static HttpURLConnection download(String url) {
  HttpURLConnection conn = null;
  try {
   String proxyHost = android.net.Proxy.getDefaultHost();
   if (proxyHost != null) {//如果是wap方式,要加网关
    java.net.Proxy p = new java.net.Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress(
      android.net.Proxy.getDefaultHost(), android.net.Proxy.getDefaultPort()));
    conn = (HttpURLConnection) new URL(url).openConnection(p);
   } else {
    conn = (HttpURLConnection) new URL(url).openConnection();
   }
   // conn.setReadTimeout(5000);
   conn.setConnectTimeout(10000);
   conn.setRequestMethod("GET");
   conn.setRequestProperty(
     "Accept",
     "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
   conn.setRequestProperty("Accept-Language", "zh-CN");
   conn.setRequestProperty("Referer", url);
   conn.setRequestProperty("Charset", "UTF-8");
   conn.setRequestProperty(
     "User-Agent",
     "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
   conn.setRequestProperty("Connection", "Keep-Alive");
   conn.connect();
   if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
    return conn;
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return null;
 }

}


© 著作权归作者所有

共有 人打赏支持
7
粉丝 0
博文 4
码字总数 5732
作品 0
海淀
私信 提问
关于安卓webview调用wap界面实现银联支付遇到问题请教

使用webview加载wap界面实现银联在线支付 其中webview.setting WebSettings settings = webview.getSettings(); settings.setSupportZoom(true); // 可以缩放 settings.setUseWideViewPort(......

嘿嘿嘿嘿的
2017/06/12
118
0
Android中使用cmwap接入点访问互联网的问题及解决办法

/** *Android 使用cmwap GPRS 方式联网 */ CMWAP和CMNET只是中国移动为其划分的两个GPRS接入方式。中国移动对CMWAP作了一定的限制,主要表现在CMWAP接入时只能访问 GPRS网络内的IP(10.*.*....

无鸯
2011/09/08
1K
0
android网络类型 wap代理设置

1、很多人都知道移动提供的两个不同的接入点,即:CMWAP 和 CMNET ,前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务的。它们在实现方式上并没有任何差别...

caikezhan
2012/07/19
0
1
WebApp与Native App的区别

WebApp与Native App的区别 Native App: 1、开发成本非常大。一般使用的开发语言为JAVA、C++、Objective-C。 2、更新体验较差、同时也比较麻烦。每一次发布新的版本,都需要做版本打包,且需...

一真的鱼
07/03
0
0
微信公众平台开发:进阶篇(Web App开发入门)

WebApp与Native App有何区别呢? Native App: 1、开发成本非常大。一般使用的开发语言为JAVA、C++、Objective-C。 2、更新体验较差、同时也比较麻烦。每一次发布新的版本,都需要做版本打包...

LorinLuo
2015/03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
17分钟前
0
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
4
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
8
0
EOS错误代码及中文释义

本文集汇总了EOS区块链常见错误代码及其含义,完整错误代码集请查看 EOS错误代码集 - 汇智网 EOS错误代码列表如下, <table class="table table-striped"> <thead> <tr><th>错误代码</th><t......

汇智网教程
昨天
5
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部