以前的代码片段:
/**
*
*
* 实现获取福彩双色球的开奖号码
*/
public class ParserSSQ extends ParserSportGameHTML{
int MAX_GETDATASIZE = 5 * 1024;
public String parserLotteryHtml() throws Exception {
String ssqurl = EnvConfig.getInstance().getGAMESSQURL();
String GAMESSQ_HTTP_LAST_MODIFIED = LastSuccConfig.getInstance().GAMESSQ_HTTP_LAST_MODIFIED;
String GAMESSQ_HTTP_ETAG = LastSuccConfig.getInstance().GAMESSQ_HTTP_ETAG;
if (EnvConfig.getInstance().isGAMESSQ_USE_HTTPHEAD()){
GAMESSQ_HTTP_LAST_MODIFIED = "";
GAMESSQ_HTTP_ETAG = "";
}
String result = "";
boolean isModify = true;
StringBuffer buffer = new StringBuffer();
String HTTP_head_first = "";
issuename_ = ssqurl;
awardurl_ = ssqurl;
// System.out.println("");
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
URL url = new URL(ssqurl);
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
huc.setRequestMethod("GET");
huc.setDoOutput(true);
huc.setDoInput(true);
huc.setAllowUserInteraction(false);
if (EnvConfig.getInstance().isGAMESSQ_USE_HTTPHEAD()){
System.out.println("使用HTTP_LAST_MODIFIED及HTTP_ETAG");
huc.setRequestProperty("If-Modified-Since",GAMESSQ_HTTP_LAST_MODIFIED);
huc.setRequestProperty("If-None-Match", GAMESSQ_HTTP_ETAG);
}
huc.connect();
//获取回来的流
InputStream in = huc.getInputStream();
int bytes = 0; int i = 0;
while ( (bytes = in.read()) != -1) {
buffer.append( (char) bytes);
i = i + 1;
if ( i > MAX_GETDATASIZE ) break;
}
in.close();
GAMESSQ_HTTP_LAST_MODIFIED = huc.getHeaderField("Last-Modified");
GAMESSQ_HTTP_ETAG = huc.getHeaderField("ETag");
HTTP_head_first = huc.getHeaderField(0);
huc.disconnect();
if (GAMESSQ_HTTP_LAST_MODIFIED == null) GAMESSQ_HTTP_LAST_MODIFIED = "";
if (GAMESSQ_HTTP_ETAG == null) GAMESSQ_HTTP_ETAG = "";
if (EnvConfig.getInstance().getISDEBUG() == 1) {
System.out.println("首行:"+HTTP_head_first);
System.out.println("Last-Modified:"+GAMESSQ_HTTP_LAST_MODIFIED);
System.out.println("ETag:"+GAMESSQ_HTTP_ETAG);
System.out.println("长度="+buffer.length());
//System.out.println("内容="+buffer.substring(0,buffer.length()));
}
String notModified = "Not Modified";
if (HTTP_head_first.indexOf(notModified) >= 0){
isModify = false;
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
if (isModify) {
if (EnvConfig.getInstance().isGAMESSQ_USE_HTTPHEAD()){
LastSuccConfig.getInstance().GAMESSQ_HTTP_ETAG = GAMESSQ_HTTP_ETAG;
LastSuccConfig.getInstance().GAMESSQ_HTTP_LAST_MODIFIED = GAMESSQ_HTTP_LAST_MODIFIED;
LastSuccConfig.getInstance().saveNewValueToFile();
}
result = GetResult(buffer);
}
ShowLogs(result);
return result ;
}
应该主要到,上面的代码稍加修改,就可以应用于http客户端的缓存(先利用Head获取内容是否修改,然后再用Get获取内容)
分享到:
相关推荐
在这个特定的源代码库中,我们看到的是一个利用HttpModule实现Ajax客户端回调处理的实例。让我们深入了解一下这个技术及其应用场景。 1. **HttpModule的基本概念** HttpModule是ASP.NET中的一类特殊组件,它们可以...
为确保正确处理中文字符,你需要确保以下几个关键点: - 客户端(AJAX)与服务器端使用的字符编码保持一致,如UTF-8。 - 在发送AJAX请求时,设置请求头的Content-Type,例如`'Content-Type': 'application/x-...
实现通过扫小程序码来登录网站的核心流程主要可以分为以下几个步骤: 1. **获取sceneid**:sceneid是一个与用户登录场景相关联的唯一标识符。在实现过程中,sceneid的生成至关重要,它保证了每个登录场景的独立性和...
在“Blog-Examples-master”这个压缩包中,我们可能找到以下几个关键知识点: 1. **Java HTTP 客户端**:Java标准库提供了`java.net.HttpURLConnection`类,可以用来发送HTTP请求。这些示例可能演示了如何使用此类...
它将视频流分割成多个小段(TS或MP4),便于网络适应和客户端缓存。 5. **RTMP (Real-Time Messaging Protocol)**: Adobe Systems开发的协议,用于在服务器和客户端之间进行实时数据通信,常用于直播平台的视频流推...
2. **C语言实现**:可能提供了一段完整的C语言代码,演示如何构建一个简单的ARP客户端或服务器,实现ARP请求和响应的发送与接收。这部分可能涵盖数据结构设计,如 ARP 报文的封装和解析,以及网络I/O操作,如套接字...
压缩包中的文件"ping页面再http请求"可能是一个文档或脚本,详细描述了如何实施ping请求和HTTP请求的流程,或者是一段代码示例,演示了这些技术的实际应用。 总的来说,这个主题涵盖了网络诊断、网页交互和HTTP通信...
5. 功能模块:此系统可能包含以下几个核心模块:用户管理(注册、登录、权限控制)、信息发布(新增、修改、删除信息)、信息检索(按关键词、类别等条件搜索信息)和系统管理(后台维护、日志记录)。 6. 安全性:...
在压缩包中的“PicassoDemo”可能包含了以下几个关键部分: 1. `build.gradle` 文件:配置了Picasso和OkHttp的依赖库。 2. `MainActivity.java` 或类似类:实现了图片加载的逻辑,使用了Picasso API。 3. `activity_...
6、修正“窗口_枚举所有子窗口”当过滤类名输入空符号或一段空文本后无法枚举的BUG,感谢易友【vibu】反馈. 7、改名“编码_Ansi到十进制_文本”源作者重新改名为“编码_Ansi到ASCII_文本型”。 8、字节集_还原,新版...
当一个客户端获取锁时,它会尝试设置一个带有过期时间的键,确保即使客户端异常,锁也能在一段时间后自动释放。这样可以防止死锁的发生。 SpringBoot是一个快速开发框架,它简化了Spring的配置和使用。在SpringBoot...
在标题"**DWR的几种小事例Ajax**"中,我们可以理解为这个压缩包包含了几个DWR在实际应用中的小案例,这些案例可能涉及到不同的功能或应用场景,例如数据的异步加载、用户界面的动态更新等。这些例子对于初学者来说是...
在"Mvc3Filter"这个文件夹中,你可能会找到以下几个关键文件: - `AuthorizationFilter.cs`: 实现了授权过滤器的示例代码。 - `ActionFilter.cs`: 展示了如何创建自定义的操作过滤器。 - `ExceptionFilter.cs`: ...
下面将详细介绍与标题、描述及部分代码相关的几个核心概念和技术要点。 ### JSON(JavaScript Object Notation) JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript...
- JavaScript部分定义了一个`changeCode()`函数,当用户点击验证码图片时,会重新加载一个新的验证码图像,通过添加随机数参数来避免浏览器缓存的问题。 - JSP部分负责处理验证码图片的生成逻辑。 #### 2. **...
综上所述,"jsp-mysql-counter.rar_jsp mysql"项目旨在演示如何结合JSP和MySQL实现一个基本的页面访问计数功能,涉及到了服务器端编程、数据库操作、以及Web应用的常用设计模式。这为初学者提供了学习Web开发基础和...
在ASP同学录设计中,主要涉及到以下几个关键知识点: 1. **网页交互**:ASP能够处理HTTP请求,接收用户的输入,如注册、登录信息,并根据这些信息进行响应,例如显示特定的页面或者执行数据库查询。 2. **数据库...
它可能涵盖了以下几个方面: 1. **Cookie的创建与发送**:当服务器通过HTTP响应头中的`Set-Cookie`字段发送Cookie时,浏览器会将其保存在本地。每次用户发起新的HTTP请求,浏览器会自动在请求头的`Cookie`字段中...
ASP.NET页面生命周期分为几个关键阶段,如初始化、加载、验证、呈现和卸载,理解这些阶段对于调试和优化代码至关重要。事件处理模型则允许开发者通过简单的事件驱动编程来响应用户交互。 接着,我们将探索ASP.NET ...