HTTP响应已更改?

时间:2011-07-18 06:08:05

标签: post httpwebrequest http-post httpwebresponse

我有HttpWebRequest对网络服务器进行'POST'并获取HTML页面作为回应。

我被问到最好的做法是如何知道我得到的回应是否有所改变?

我无法在Web服务器标头上进行中继,它们不一定是。

这将以一种我不需要再次解析响应的方式来提高性能,并将在半秒左右的时间内转到下一个请求。

先谢谢你

2 个答案:

答案 0 :(得分:0)

您可以告知您的网络服务器上次修改日期。见here。如果您不能依赖,那么无论如何您都必须解析您的回复。你可以使用md5快速完成。所以你“md5”你当前的反应并将它与之前的反应进行比较。

答案 1 :(得分:0)

您不应该尝试依赖POST请求的标头,因为它不应该发出任何缓存标头。

您需要做的是执行哈希/校验和(对于绝对性能,这可以是CRC(32),对于返回的内容<,可以是“真实”哈希,例如md5 / strong>(这意味着,标题中\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;
}