【发布时间】:2011-10-07 10:26:05
【问题描述】:
我有一个HttpWebRequest,它向网络服务器“发布”并获得一个 HTML 页面作为响应。
有人问我如何才能知道我收到的回复是否已更改?
我无法中继网络服务器标头,它们不必如此。
这将提高性能,我不需要再次解析响应,并将在半秒左右进入下一个请求。
谢谢你
【问题讨论】:
标签: post httpwebrequest http-post httpwebresponse
我有一个HttpWebRequest,它向网络服务器“发布”并获得一个 HTML 页面作为响应。
有人问我如何才能知道我收到的回复是否已更改?
我无法中继网络服务器标头,它们不必如此。
这将提高性能,我不需要再次解析响应,并将在半秒左右进入下一个请求。
谢谢你
【问题讨论】:
标签: post httpwebrequest http-post httpwebresponse
您可以告诉您的网络服务器上次修改日期。见here。如果您不能依赖它,则无论如何都必须解析您的响应。您可以使用 md5 快速完成此操作。因此,您“md5”您当前的响应并将其与之前的响应进行比较。
【讨论】:
POST 请求。
您不应该尝试依赖 POST 请求的标头,因为它不应该发出任何缓存标头。
您需要做的是对返回的 content (这意味着,标题中\r\n\r\n 下的所有内容)并以这种方式进行比较。
存储最后一个请求的校验和/哈希并与之进行比较应该足够了。
例如(伪):
int lastChecksum = 0;
bool hasChanged() {
performWebRequest();
string content = stripHeaders();
int checksum = crc32string(content);
if(checksum != lastChecksum) {
lastChecksum = checksum;
return true;
}
return false;
}
【讨论】: