cmnet && cmwap自动判断代码备份
2009-12-29 11:52
423 查看
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
/**
* 接入点自动判断
* 简化操作,不采用同时启动cmnet,cmwap尝试连接
* 先使用cmnet连接,如果连接不上,再使用cmwap连接
* 如果还是失败,重试上面操作一次,避免网络不好引起的错误
* @author tim
*
*/
public class CheckWapOrNet{
/**
* 代理标记
*/
private boolean isProxy = false;
/**
* 是否连接成功
*/
private boolean isSucceed = false;
/**
* 标记用户是否已经确认连接,即安全提示的对话框
*/
private boolean isSelect = false;
/**
* 10秒钟的超时时间
*/
private long overtime = 10000l;
/**
* 如果开始连接,记录下当时的时间
*/
private long selectTime;
private String cmnetUrl = "http://wap.google.cn";
private String cmwapUrl = "http://10.0.0.172:80";
/**
* 当前连接
*/
private HttpConnection conn = null;
/**
* 定时检查当前的连接是否已经超时
*/
Timer timer = new Timer();
/**
* 尝试是否已经结束
*/
private boolean checkEnd = false;
public CheckWapOrNet(){
String defaultAPN = RMSTools.getAPN();
if(defaultAPN.equals(RMSTools.CMNET))
isProxy = false;
else
isProxy = true;
TimerTask task = new TimerTask(){
public void run() {
long currentTime = System.currentTimeMillis();
if(isSelect && currentTime - selectTime >= overtime){//连接超时,停止连接
closeConntion();
}
}
};
//每2秒检查当前的连接是否已经超时
timer.schedule(task, 500, 2000);
}
public void start() {
int index = 1;
//如果连接没有成功,cmnet,cmwap切换重试4次
while(!isSucceed && index <=4){
check_Conn();
closeConntion();
timer.cancel();
if(!isSucceed){
isProxy = !isProxy;
}
index++;
}
checkEnd = true;
}
private void check_Conn(){
try{
isSelect = false;
if(isProxy){
conn = (HttpConnection)Connector.open(cmwapUrl,Connector.READ,true);
conn.setRequestProperty("X-Online-Host", cmwapUrl);
}else{
conn = (HttpConnection)Connector.open(cmnetUrl,Connector.READ,true);
}
conn.setRequestMethod(HttpConnection.GET);
isSelect = true;
selectTime = System.currentTimeMillis();
int responseCode = conn.getResponseCode();
isSucceed = true;
if(isProxy){
RMSTools.saveAPN(RMSTools.CMWAP);
}else{
RMSTools.saveAPN(RMSTools.CMNET);
}
}
catch(IOException e){
e.printStackTrace();
isSucceed = false;
}catch(SecurityException se){
se.printStackTrace();
isSucceed = false;
}
finally{
if(conn != null){
try {
conn.close();
conn = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void closeConntion(){
if(conn != null){
try {
conn.close();
conn = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
public boolean isProxy() throws Exception {
if(!checkEnd){
throw new Exception("Check CMNET/CMWAP Connection Is Not Finish");
}
return isProxy;
}
public boolean isCheckEnd() throws Exception {
if(!isSucceed){
throw new Exception("Check CMNET/CMWAP Connection Failed");
}
return checkEnd;
}
}
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
/**
* 接入点自动判断
* 简化操作,不采用同时启动cmnet,cmwap尝试连接
* 先使用cmnet连接,如果连接不上,再使用cmwap连接
* 如果还是失败,重试上面操作一次,避免网络不好引起的错误
* @author tim
*
*/
public class CheckWapOrNet{
/**
* 代理标记
*/
private boolean isProxy = false;
/**
* 是否连接成功
*/
private boolean isSucceed = false;
/**
* 标记用户是否已经确认连接,即安全提示的对话框
*/
private boolean isSelect = false;
/**
* 10秒钟的超时时间
*/
private long overtime = 10000l;
/**
* 如果开始连接,记录下当时的时间
*/
private long selectTime;
private String cmnetUrl = "http://wap.google.cn";
private String cmwapUrl = "http://10.0.0.172:80";
/**
* 当前连接
*/
private HttpConnection conn = null;
/**
* 定时检查当前的连接是否已经超时
*/
Timer timer = new Timer();
/**
* 尝试是否已经结束
*/
private boolean checkEnd = false;
public CheckWapOrNet(){
String defaultAPN = RMSTools.getAPN();
if(defaultAPN.equals(RMSTools.CMNET))
isProxy = false;
else
isProxy = true;
TimerTask task = new TimerTask(){
public void run() {
long currentTime = System.currentTimeMillis();
if(isSelect && currentTime - selectTime >= overtime){//连接超时,停止连接
closeConntion();
}
}
};
//每2秒检查当前的连接是否已经超时
timer.schedule(task, 500, 2000);
}
public void start() {
int index = 1;
//如果连接没有成功,cmnet,cmwap切换重试4次
while(!isSucceed && index <=4){
check_Conn();
closeConntion();
timer.cancel();
if(!isSucceed){
isProxy = !isProxy;
}
index++;
}
checkEnd = true;
}
private void check_Conn(){
try{
isSelect = false;
if(isProxy){
conn = (HttpConnection)Connector.open(cmwapUrl,Connector.READ,true);
conn.setRequestProperty("X-Online-Host", cmwapUrl);
}else{
conn = (HttpConnection)Connector.open(cmnetUrl,Connector.READ,true);
}
conn.setRequestMethod(HttpConnection.GET);
isSelect = true;
selectTime = System.currentTimeMillis();
int responseCode = conn.getResponseCode();
isSucceed = true;
if(isProxy){
RMSTools.saveAPN(RMSTools.CMWAP);
}else{
RMSTools.saveAPN(RMSTools.CMNET);
}
}
catch(IOException e){
e.printStackTrace();
isSucceed = false;
}catch(SecurityException se){
se.printStackTrace();
isSucceed = false;
}
finally{
if(conn != null){
try {
conn.close();
conn = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void closeConntion(){
if(conn != null){
try {
conn.close();
conn = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
public boolean isProxy() throws Exception {
if(!checkEnd){
throw new Exception("Check CMNET/CMWAP Connection Is Not Finish");
}
return isProxy;
}
public boolean isCheckEnd() throws Exception {
if(!isSucceed){
throw new Exception("Check CMNET/CMWAP Connection Failed");
}
return checkEnd;
}
}
相关文章推荐
- [置顶] Linux下git代码仓库&&公共仓库&&软件仓库每日自动备份
- 智能进行WIFI,CMWAP和CMNET的自动判断访问
- android的日积月累-进行WIFI,CMWAP和CMNET的自动判断访问
- 用批处理实现自动备份和清理mysql数据库的代码
- 百度判断手机终端并自动跳转uaredirect.js代码及使用实例
- 根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
- ShadowStar CodeFast 0.8 自动备份代码
- Linux平台和Windows平台下两种自动备份MySQL数据的脚本(Shell&Bat)和步骤
- 百度判断手机终端并自动跳转js代码及使用实例
- 数据库批量备份存储过程(判断盘符、路径,错误盘符返回,不存在的路径自动创建)[
- Linux自动备份MySQL数据库脚本代码
- Mybatis 自动生成代码插件&IDEA插件
- iOS 代码设置自动布局
- <flex4.6 保留自动产生的actionscript代码的编译选项>
- 黄聪:如何判断VS开发C#是否为设计模式,以免编译之前操作窗体设计器代码自动运行
- Linux oracle数据库自动备份自动压缩脚本代码
- 实战:sqlserver 类型自动判断和条件检查的备份脚本
- js判断是否是移动端自动跳转到wap页面代码
- 关于SubSonic3.0生成的表名自动加复数(s)的“用户代码未处理SqlException,对象名'xxxs'无效”异常处理
- 自动评分网站中判断正确多少题核心代码