使用 httr GET 时不考虑 If-Modified-Since?
Posted
技术标签:
【中文标题】使用 httr GET 时不考虑 If-Modified-Since?【英文标题】:If-Modified-Since not considered while using httr GET? 【发布时间】:2017-01-17 05:37:28 【问题描述】:我的要求/目标:
我正在从公共页面检索过去 3 个月的 Facebook 帖子,我想只选择最近(过去 2 天)修改过的帖子。
我正在使用 httr R 包,并使用 GET 函数来完成上述操作。
我尝试了以下方法:
url.data
url.data
在上面的 'url' 中有 'since', 'until' 字段指定时间 需要检索帖子的期限(3个月)。 'token' 是用于身份验证的 OAuth 令牌。
以上两种方法都是检索所有帖子,而不是仅检索过去2天修改过的帖子。
是否有另一种将 If-Modified-Since 传递给 GET 的方法,这将导致仅检索所需的帖子?
注意:我已经查看了这些与 If-Modified-Since 相关的帖子,但它们没有回答我的问题:
-
"If-Modified-Since" header
"If-Modified-Since" Header?
If modified since - HTTP protocol
If-Modified-Since Date Format
还有一些与我的场景不完全相关的问题。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我认为您的问题的核心是“If-Modified-Since”标头的目的与 Facebook 过滤结果之间的混淆。
“If-Modified-Since”询问服务器“当我调用此 URL/使此查询自此日期/时间起更改时要返回的内容吗?”
发送到 Facebook 的“since”和“until”参数过滤请求以仅显示在这两个日期之间发布的内容。
Facebook 不会将两者合并以返回满足这两个问题的帖子 - 这些问题位于参数中设置的两个日期/时间之间,并且自“If-Modified-Since”设置的日期/时间以来已被修改。
这是因为 Facebook 执行搜索/过滤,查看整个响应并回答“当我调用此 URL/使此查询自此日期/时间以来要返回的内容是否发生更改?”这一问题。基于整个响应。如果整个响应中有任何变化,那么它会将整个响应发送给您。
如果您想识别已更改的单个帖子,则必须遍历数组并单独检查每个元素。
【讨论】:
以上是关于使用 httr GET 时不考虑 If-Modified-Since?的主要内容,如果未能解决你的问题,请参考以下文章
HTTR 包:SSL 证书错误,SSL3_GET_SERVER_CERTIFICATE