2011-07-18 58 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; 
}