2011-07-18 59 views
0

我有一个HttpWebRequest做“POST”到Web服务器并获得一个HTML页面作为回应。HTTP响应已更改?

我被问过最佳做法如何知道我得到的回应已被更改或没有?

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

这样可以提高性能,我不需要再次解析响应,并且会在半秒内转到下一个请求。

先进的感谢您

回答

0

您可以告诉您的网络服务器最后修改日期。见here。如果你不能依靠,你必须解析你的反应。你可以使用md5快速完成。所以你“md5”你当前的回应,并与之前的比较。

+0

这不会(或者至少不应该)..上的'POST'请求​​工作。 –

+0

是的,你是对的。所以你必须改变它到一个GET或使用MD5来比较它。 – duedl0r

0

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

你需要做的,而不是什么是执行散列/校验和(这可以是CRC(32)绝对表现或“真正的”散列如md5)对返回内容(这意味着,一切\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; 
}