您的位置:首页 > 编程语言

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: