11.4. 调试 HTTP web 服务

首先,让我们开启 Python HTTP 库的调试特性并查看网络线路上的传输过程。这对本章的全部内容都很有用,因为你将添加越来越多的特性。

例 11.3. 调试 HTTP

>>> import httplib
>>> httplib.HTTPConnection.debuglevel = 1             
>>> import urllib
>>> feeddata = urllib.urlopen('http://www.bhlaab.com/618/xml/atom.xml').read()
connect: (diveintomark.org, 80)                       
send: '
GET /xml/atom.xml HTTP/1.0                            
Host: diveintomark.org                                
User-agent: Python-urllib/1.15                        
'
reply: 'HTTP/1.1 200 OK\r\n'                          
header: Date: Wed, 14 Apr 2004 22:27:30 GMT
header: Server: Apache/2.0.49 (Debian GNU/Linux)
header: Content-Type: application/atom+xml
header: Last-Modified: Wed, 14 Apr 2004 22:14:38 GMT  
header: ETag: "e8284-68e0-4de30f80"                   
header: Accept-Ranges: bytes
header: Content-Length: 26848
header: Connection: close
urllib 依赖于另一个 Python 的标准库,时时彩计划软件公式:httplib。通常你不必显式地给出 import httplib (urllib 会自动导入),但是你可以为 HTTPConnection 类 (urllib 在内部使用它来访问 HTTP 服务器) 设置调试标记。这是一种令人难以置信的有用技术。Python 其他的一些库也有类似的调试标记,但是没有命名和开启它们的特殊标准;如果有类似的特性可用,你需要阅读每一个库的文档来查看使用方法。
既然已经设置了调试标记,HTTP 的请求和响应信息会实时地被打印出来。首先告诉你的是你连接服务器 diveintomark.org 的 80 端口,这是 HTTP 的标准端口。
当你请求 Atom feed 时,urllib 向服务器发送三行信息。第一行指出你使用的 HTTP verb 和资源的路径 (除去域名)。在本章中所有的请求都将使用 GET,但是在下一章的 SOAP 中,你会看到所有的请求都使用 POST 。除了请求的动词不同之外,基本的语法是相同的。
第二行是 Host 头信息,它指出你所访问的服务的域名。这一点很重要,因为一个独立的 HTTP 服务器可以服务于多个不同的域。当前我的服务器服务于 12 个域;其他的服务器可以服务于成百乃至上千个域。
第三行是 User-Agent 头信息。在此你看到的是由 urllib 库默认添加的普通的 User-Agent 。在下一节,你会看到如何自定义它的更多细节。
服务器用状态代码和一系列的头信息答复 (其中一些数据可能会被存储到 feeddata 变量中)。这里的状态代码是 200,意味着 “一切正常,这就是您请求的数据”。服务器也会告诉你响应请求的数据、一些有关服务器自身的信息,以及传给你的数据的内容类型。根据你的应用不同,这或许有用,或许没用。这充分确认了你所请求的是一个 Atom feed,瞧,你获得了 Atom feed (application/atom+xml,它是已经注册的有关 Atom feeds 的内容类型)。
当此 Atom feed 有最近的修改,服务器会告诉你 (本例中,大约发生在 13 分钟之前)。当下次请求同样的 feed 时,你可以这个日期再发送给服务器,服务器将做最近修改数据检查。
服务器也会告诉你这个 Atom feed 有一个值为 "e8284-68e0-4de30f80" 的 ETag hash。这个 hash 自身没有任何意义;除了在下次访问相同的 feed 时将它送还给服务器之外,你也不需要用它做什么。然后服务器使用它告诉你修改日期是否被改变了。
时时彩投注软件 信阳时时彩技巧 时时彩靠谱的软件 内蒙时时彩游戏规则 app软件开发多少钱
优博时时彩平台网址 江西时时彩倍投不亏钱 时时彩四星综合 博悦时时彩登录地址 时时彩代理被抓判刑吗
时时彩平台搭建视频 时时彩稳赚上竤彩玩 2017时时彩诈骗最新案 易购时时彩平台 eve时时彩平台
重庆时时彩内部人卖号 神圣计划下载 江西时时彩后三跨度 凤凰娱乐平台登陆 时时彩预测软件源码
大优彩票 七乐彩中奖规则 河南快三 天津快乐十分开奖结果 今天排列5预测最准的
重庆时时彩助赢软件好 江苏11选5中奖概率 甘肃快3今日开奖号码 好彩1走势图 捕鱼达人之深寂海底
排列三魔图 山西体彩新11选5走势图 欢乐麻将全集 北京时时彩3分钟开奖 安徽十一选五走势图下载
为什么贵州快3时间表♂贵州图片♂如何破解快三买下期 安徽11选5遗漏数据导航 越南河内一分彩走势图 彩票走势网 极速赛车开奖视频直播