【发布时间】:2015-11-07 15:07:29
【问题描述】:
我试图使用 python urllib2 库来实现处理 HTTP 的 Last-Modified 功能,这样如果服务器的 GET 响应自上次以来没有被修改,它应该抛出“urllib2.HTTPError: HTTP Error 304: Not Modified”。我已经使用下面的代码实现了相同的功能,但不确定为什么我没有收到 304 响应。
我也对 urllib2.py 进行了研究,但在此模块中没有找到任何关于状态码 304 实现的细节。
下面是我的代码和结果:
import httplib
import urllib2
httplib.HTTPConnection.debuglevel = 1
request = urllib2.Request('http://www.iitg.ac.in/groff/projects.html')
opener = urllib2.build_opener()
firstdatastream = opener.open(request)
print firstdatastream.headers.dict
request.add_header("If−Modified−Since", firstdatastream.headers.dict['last- modified'])
print "Value of last modified time \n"
var = firstdatastream.headers.dict['last-modified']
print var
seconddatastream = opener.open(request)
print seconddatastream.headers.dict
代码的倒数第二行应该引发“urllib2.HTTPError: HTTP Error 304: Not Modified”,因为(这行代码): request.add_header("If-Modified-Since", firstdatastream.headers.dict['last-modified'])
但我无法在控制台结果中看到它。以下是我的结果:
{'content-length': '6706', 'accept-ranges': 'none', 'server': 'Apache/2.2.15 (Red Hat)', 'last-modified': 'Thu, 07 2015 年 5 月 09:27:08 GMT', 'connection': 'close', 'etag': '"8a0ce0-1a32-5157a83ffe2b7"', 'date': 'Fri, 14 Aug 2015 06:22:02 GMT', '内容类型': '文本/html;字符集=UTF-8'} 最后修改时间的值
格林威治标准时间 2015 年 5 月 7 日星期四 09:27:08
{'content-length': '6706', 'accept-ranges': 'none', 'server': 'Apache/2.2.15 (Red Hat)', 'last-modified': 'Thu, 07 2015 年 5 月 09:27:08 GMT', 'connection': 'close', 'etag': '"8a0ce0-1a32-5157a83ffe2b7"', 'date': 'Fri, 14 Aug 2015 06:22:02 GMT', '内容类型': '文本/html; charset=UTF-8'}
任何帮助将不胜感激。非常感谢。
【问题讨论】: