我有一個HttpWebRequest
做「POST」到Web服務器並獲得一個HTML頁面作爲迴應。HTTP響應已更改?
我被問過最佳做法如何知道我得到的迴應已被更改或沒有?
我無法在Web服務器標題上進行中繼,它們不一定是。
這樣可以提高性能,我不需要再次解析響應,並且會在半秒內轉到下一個請求。
先進的感謝您
我有一個HttpWebRequest
做「POST」到Web服務器並獲得一個HTML頁面作爲迴應。HTTP響應已更改?
我被問過最佳做法如何知道我得到的迴應已被更改或沒有?
我無法在Web服務器標題上進行中繼,它們不一定是。
這樣可以提高性能,我不需要再次解析響應,並且會在半秒內轉到下一個請求。
先進的感謝您
您可以告訴您的網絡服務器最後修改日期。見here。如果你不能依靠,你必須解析你的反應。你可以使用md5快速完成。所以你「md5」你當前的迴應,並與之前的比較。
您不應該試圖依賴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;
}
這不會(或者至少不應該)..上的'POST'請求工作。 –
是的,你是對的。所以你必須改變它到一個GET或使用MD5來比較它。 – duedl0r