【问题标题】:HTTP Response changed?HTTP 响应改变了?
【发布时间】:2011-10-07 10:26:05
【问题描述】:

我有一个HttpWebRequest,它向网络服务器“发布”并获得一个 HTML 页面作为响应。

有人问我如何才能知道我收到的回复是否已更改?

我无法中继网络服务器标头,它们不必如此。

这将提高性能,我不需要再次解析响应,并将在半秒左右进入下一个请求。

谢谢你

【问题讨论】:

    标签: post httpwebrequest http-post httpwebresponse


    【解决方案1】:

    您可以告诉您的网络服务器上次修改日期。见here。如果您不能依赖它,则无论如何都必须解析您的响应。您可以使用 md5 快速完成此操作。因此,您“md5”您当前的响应并将其与之前的响应进行比较。

    【讨论】:

    • 这不会(或至少不应该).. 处理 POST 请求。
    • 是的,你是对的。因此,您要么必须将其更改为 GET,要么使用 md5 进行比较。
    【解决方案2】:

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

    您需要做的是对返回的 content (这意味着,标题中\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;
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多