HTTP-ответ изменился? - PullRequest
       28

HTTP-ответ изменился?

0 голосов
/ 18 июля 2011

У меня есть HttpWebRequest, который выполняет 'POST' для веб-сервера и получает HTML-страницу в ответ.

Меня спросили, как лучше узнать, изменился ли мой ответ или нет?

Я не могу ретранслировать заголовки веб-сервера, они не должны быть.

это повысит производительность так, что мне не нужно будет снова анализировать ответ и перейдет к следующему запросу через полсекунды или около того.

спасибо заранее

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

Вы не должны пытаться полагаться на заголовки для запроса 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;
}
0 голосов
/ 18 июля 2011

Вы можете сообщить своему веб-серверу о дате последнего изменения. см. здесь . Если вы не можете полагаться на это, вы все равно должны проанализировать свой ответ. Вы можете сделать это быстро, используя md5. Таким образом, вы «md5» ваш текущий ответ и сравнить его с предыдущим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...