您的位置:首页 > 理论基础 > 计算机网络

java/android http数据缓存

2015-09-11 18:24 423 查看
import java.util.HashMap;
import java.util.Map;

public class BasicCache {
private Map<String, String> cache = new HashMap<String, String>();
private static BasicCache bc;

private BasicCache() {
}

public static BasicCache getInstance() {
if (null == bc) {
bc = new BasicCache();
}
return bc;
}

/**
* 根据url从缓存中取数据
*
* @param key
* @return
*/
public String getValue(String key) {
String value = cache.get(key);
if (null == value) {
Tools tools = new Tools();
String result = tools.getUrl(key, 10000);
if (null != result && !"".equals(result)) {
cache.put(key, result);
}
return result;
} else {
return value;
}
}

/**
* 清空缓存
*/
public void clearCache() {
cache.clear();
}

// http://my.oschina.net/xiahuawuyu/blog/92083 // http://blog.csdn.net/earbao/article/details/48376143 
//差个有效期自动销毁  java/android http数据缓存
public static void main(String[] args) {
String url = "http://www.baidu.com/";
for (int i = 0; i < 10; i++) {
long start = System.currentTimeMillis();
String result = BasicCache.getInstance().getValue(url);
System.out.println(result);
long end = System.currentTimeMillis();
System.out.println(end - start + " ms");
}

}

}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

//请求类
public class Tools {
public String getUrl(String urls, int overtime) {
StringBuffer result = new StringBuffer();
URL url = null;
try {
url = new URL(urls);
if (url == null) {
System.out.println("读取url地址失败");
return null;
}
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
conn.setRequestMethod("GET");
conn.setConnectTimeout(overtime);
conn.setReadTimeout(overtime);
conn.connect();
int code = conn.getResponseCode();
if (code != 200) {
System.out.println("服务器返回错误的状态码:" + code);
} else {
BufferedReader br = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "utf-8"));
String temp = null;
while ((temp = br.readLine()) != null) {
result.append(temp);
}
}

} catch (IOException e) {
System.out.println("error:\n" + e.getMessage());
return null;
}
return result.toString();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: