日期:2014-05-17 浏览次数:20782 次
package com.sxz.timecontroal; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.UnknownHostException; import java.util.Calendar; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; /** * 当可以连接网络时,取得网络上的时间使用。 * * @author sxz 2012/01/29 */ public class CheckTImeWithNet { /** * 获取时间数据所在的网点地址 */ private static final String NET_TIME_URL = "http://open.baidu.com/special/time/"; /** * 获取时间数据所在行的key值 */ private static final String NET_TIME_FIND_KEY_WORD = "window.baidu_time("; /** * 网络上的时间 */ private Calendar netDate = Calendar.getInstance(); /** * 获取当前 网络上的时间 */ public Calendar getNetDate() { return netDate; } /** * 设置当前 网络上的时间 */ public void setNetDate(long netDate) { this.netDate.setTimeInMillis(netDate); } @SuppressWarnings("finally") public boolean checkTime() { boolean flag = true; try { // 创建连接 HttpClient httpClient = new HttpClient(); // 设置请求参数 GetMethod getMethod = new GetMethod(NET_TIME_URL); // 设置读取网页数据时的编码格式 getMethod.addRequestHeader( "Content ", "text/html,charset=GBK"); // 进行网络连接,并获取返回结果code,根据这个code判断,当前是否连接到网络。 int statusCode = httpClient.executeMethod(getMethod); if(statusCode != 200){ System.out.println("网络数据有问题,有待调整获取资源的途径"); return false; } // 获取网页信息 InputStream responseBody = getMethod.getResponseBodyAsStream(); // 设置编码格式 BufferedReader reader = new BufferedReader(new InputStreamReader(responseBody,"GBK")); // 一行一行的取出信息 String tempBf = null; while((tempBf=reader.readLine()) != null){ // 寻找有效数据 // window.baidu_time(1327819975724); int timeRowCheckFlag = tempBf.indexOf(NET_TIME_FIND_KEY_WORD); // 找到网络时间数据所在行。 if(timeRowCheckFlag > 0){ // 去掉数据中的无用数据,得到时间字符串 // window.baidu_time(1327819975724); ->1327819975724