Differences between revisions 5 and 6
Revision 5 as of 2007-08-04 05:51:39
Size: 3921
Editor: XiaoQi
Comment:
Revision 6 as of 2007-08-04 06:55:01
Size: 6799
Editor: XiaoQi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 41: Line 41:

== 设置 User-Agent ==
 1. `例11.4, (1)`:如果你的 Python IDE 仍旧为上一节的例子而打开着,你可以略过这一步,在开启 HTTP 调试'''中''' <!> 你能看到网络线路上的实际传输过程。 (./) '''时'''
 1. `例11.4, (3)`:第二步是创建一个 URL 开启器 (opener)。'''这'''可以'''使用'''任何数量的'''操作者'''来控制响应的处理。但你也可以创建一个没有任何自定义'''处理'''的开启器,'''这就是这里的操作方式'''。[[BR]]
 (./) 第二步是创建一个 URL 开启器 (opener)。'''它'''可以'''接受'''任何数量的'''处理器'''来控制响应的处理。但你也可以创建一个没有任何自定义'''处理器'''的开启器,'''在这儿你就是这么做的'''。
 1. `例11.5`:'''用''' Request 添加头信息 (./) '''给''' Request 添加头信息
 1. `例11.5, (2)`:''Convention dictates that a User-Agent should be in this specific format: an application name, followed by a slash, followed by a version number.''[[BR]]
 User-Agent '''的协商指令应该使用如下的特殊格式''':应用名,跟一个斜线,跟版本号。[[BR]]
 (./) User-Agent '''的约定格式是''':应用名,跟一个斜线,跟版本号。
 1. `同上`:'''User-Agent 通常要记录经过服务器的连同你的请求的其他详细信息,包含你的应用的 URL,'''如果发生错误,'''允许'''服务器管理员通过查看他们的访问日志与你联系。[[BR]]
 (./) '''和你的请求的其他信息一样,User-Agent 会被服务器纪录下来,其中包含你的应用的 URL。'''如果发生错误,服务器管理员'''就能'''通过查看他们的访问日志与你联系。
 1. `例11.5, (3)`:之前你创建的 opener 对象也可以再生,且它将再次获得相同的 feed,'''但是使用了你自定义的 User-Agent 头信息。'''[[BR]]
 (./) '''但这次'''使用了你自定义的 User-Agent; 头信息。
 1. `例11.5, (4)`:若你继续看,会注意到你定义的 User-Agent 头信息,'''你实际上发送了一个''' User-agent 头信息。看看有何不同?urllib2 改变了大小写所以只有首字母是大写的。这没问题,因为 HTTP 规定'''头子段名完全是'''大小写无关的。[[BR]]
 (./) 若你继续看,会注意到你定义的'''是''' User-Agent 头信息,'''但实际上发送的是''' User-agent 头信息。看看有何不同?urllib2 改变了大小写所以只有首字母是大写的。这没问题,因为 HTTP 规定'''头信息的字段名是'''大小写无关的。

== 处理 Last-Modified 和 ETag ==
 1. `Para 1`:接下来看看 {i} ^如何^添加 Last-Modified 和 ETag 头信息的支持。
 1. `例11.6, (1)`:这里便是'''你如何以编程方式访问它们'''[[BR]]
 (./) 这里便是'''用编程方式访问它们的方法'''

8-1<X11>openanything.xml HTTP web 服务

  • 频繁typo:
    • 意谓 (./) 意味

    • hander 多处被误认为header,因此被翻译成了“头信息”,改为处理器

  • 类似文件的对象一律改为类文件对象

  • client 一律译为客户端

  • file-like object 一律译为类文件对象

概览

  1. Para 2Simply stated, HTTP web services are programmatic ways of sending and receiving data from remote servers using the operations of HTTP directly.BR 简单地讲,HTTP web 服务是指直接使用 HTTP 操作从远程服务器按部就班地发送和接收数据。BR (./) 简单地讲,HTTP web 服务是指以编程的方式直接使用 HTTP 操作从远程服务器发送和接收数据。

  2. Para 3The main advantage of this approach is simplicity,...BR 利用这种方法的要点简单的,……BR (./) 这种方法的主要优点是简单,……

  3. 例11.1上, Para -2:在后面的几章里,我们将探索使用 HTTP <!> 数据发送和接收传输的 API…… (./) 进行

避免通过 HTTP 重复地获取数据

  • pass

HTTP 特性

  1. 重定向, Para 3:……然后在 Location: 头部给出新地址BR (./) 然后在 Location: 头信息中给出新地址

  2. Last-Modified/If-Modified-Since, Para 1BR 通常服务器指导 <!> 你所请求的数据的最后修改时间 (./) 知道

  3. Last-Modified/If-Modified-Since, Para 2BR ……你可以告诉服务器你上一次获得的最后修改日期:在你的请求中发送 {X} 一个 If-Modified-Since 头信息……为什么 {X} 这一点有何进步呢?因为 {X} 当服务器发送状态编码 304 时,不再重新发送数据……

  4. Last-Modified/If-Modified-Since, Para 4BR 所有现代的浏览器都支持最近修改 {i} (last-modified)的数据检查。……服务器简单地返回 304: {i} Not Modified( 没有修改

  5. ETag/If-None-Match, Para 1BR ETag 是实现与最近修改数据检查同样的功能的另一种方法:没有变化时不重新下载数据。其工作原理 方式是:服务器发送你所请求的数据的同时,发送某种数据的 hash (在 ETag 头信息中 {i} 给出),hash 的确定完全取决于服务器。当第二次请求相同的数据时, {i} 你需要在 If-None-Match: 头信息中包含 ETag hash,……在第二次请求时,通过包含 ETag hash,你 {X} 告诉服务器……

  6. 压缩, Para 1When you talk about HTTP web services, you're almost always talking about moving XML back and forth over the wire. XML is text, and quite verbose text at that, and text generally compresses well.BR 当谈论 HTTP web 服务时,几乎总是会谈及在网络线路上传输的 XML。XML 是文本,而且还是相当冗长的文本,并且文本通常可以被很好地压缩。BR (./) 关于 HTTP web 服务的主题几乎总是会涉及在网络线路上传输的 XML。XML 是文本,而且还是相当冗长的文本,文本通常可以被很好地压缩。

调试 HTTP web 服务

  1. 例11.3, (1)...you can set the debugging flag on the HTTPConnection class that urllib uses internally to connect to the HTTP server. 你可以为 urllib 使用内部的 HTTPConnection 类设置调试标记来访问 HTTP 服务器BR (./) 你可以为 HTTPConnection 类(urllib 在内部使用它来访问 HTTP 服务器)设置调试标记

  2. 例11.3, (6):服务器也会告诉你响应请求的数据、一些有关服务器自身的信息, {i} 以及传给你的数据的内容类型。

设置 User-Agent

  1. 例11.4, (1):如果你的 Python IDE 仍旧为上一节的例子而打开着,你可以略过这一步,在开启 HTTP 调试 <!> 你能看到网络线路上的实际传输过程。 (./)

  2. 例11.4, (3):第二步是创建一个 URL 开启器 (opener)。可以使用任何数量的操作者来控制响应的处理。但你也可以创建一个没有任何自定义处理的开启器,这就是这里的操作方式BR (./) 第二步是创建一个 URL 开启器 (opener)。可以接受任何数量的处理器来控制响应的处理。但你也可以创建一个没有任何自定义处理器的开启器,在这儿你就是这么做的

  3. 例11.5 Request 添加头信息 (./) Request 添加头信息

  4. 例11.5, (2)Convention dictates that a User-Agent should be in this specific format: an application name, followed by a slash, followed by a version number.BR User-Agent 的协商指令应该使用如下的特殊格式:应用名,跟一个斜线,跟版本号。BR (./) User-Agent 的约定格式是:应用名,跟一个斜线,跟版本号。

  5. 同上User-Agent 通常要记录经过服务器的连同你的请求的其他详细信息,包含你的应用的 URL,如果发生错误,允许服务器管理员通过查看他们的访问日志与你联系。BR (./) 和你的请求的其他信息一样,User-Agent 会被服务器纪录下来,其中包含你的应用的 URL。如果发生错误,服务器管理员就能通过查看他们的访问日志与你联系。

  6. 例11.5, (3):之前你创建的 opener 对象也可以再生,且它将再次获得相同的 feed,但是使用了你自定义的 User-Agent 头信息。BR (./) 但这次使用了你自定义的 User-Agent; 头信息。

  7. 例11.5, (4):若你继续看,会注意到你定义的 User-Agent 头信息,你实际上发送了一个 User-agent 头信息。看看有何不同?urllib2 改变了大小写所以只有首字母是大写的。这没问题,因为 HTTP 规定头子段名完全是大小写无关的。BR (./) 若你继续看,会注意到你定义的 User-Agent 头信息,但实际上发送的是 User-agent 头信息。看看有何不同?urllib2 改变了大小写所以只有首字母是大写的。这没问题,因为 HTTP 规定头信息的字段名是大小写无关的。

处理 Last-Modified 和 ETag

  1. Para 1:接下来看看 {i} 如何添加 Last-Modified 和 ETag 头信息的支持。

  2. 例11.6, (1):这里便是你如何以编程方式访问它们BR (./) 这里便是用编程方式访问它们的方法

DiveIntoPythonZh/2007-08-01 (last edited 2009-12-25 07:18:29 by localhost)