May 2001
Intermediate to advanced
304 pages
6h 12m
English
The httplib module, shown in Example 7-26, provides an HTTP client interface.
Example 7-26. Using the httplib Module
File: httplib-example-1.py
import httplib
USER_AGENT = "httplib-example-1.py"
class Error:
# indicates an HTTP error
def _ _init_ _(self, url, errcode, errmsg, headers):
self.url = url
self.errcode = errcode
self.errmsg = errmsg
self.headers = headers
def _ _repr_ _(self):
return (
"<Error for %s: %s %s>" %
(self.url, self.errcode, self.errmsg)
)
class Server:
def _ _init_ _(self, host):
self.host = host
def fetch(self, path):
http = httplib.HTTP(self.host)
# write header
http.putrequest("GET", path)
http.putheader("User-Agent", USER_AGENT)
http.putheader("Host", self.host)
http.putheader("Accept", "*/*")
http.endheaders()
# get response
errcode, errmsg, headers = http.getreply()
if errcode != 200:
raise Error(errcode, errmsg, headers)
file = http.getfile()
return file.read()
if _ _name_ _ == "_ _main_ _":
server = Server("www.pythonware.com")
print server.fetch("/index.htm")Note that the HTTP client provided httplib blocks while waiting
for the server to respond. For an asynchronous solution, which among
other things allows you to issue multiple requests in parallel, see
the examples for the asyncore module.
The httplib module also allows you to send other
HTTP commands, such as POST, as shown in Example 7-27.
Example 7-27. Using the httplib Module to Post Data
File: httplib-example-2.py import httplib USER_AGENT ...
Read now
Unlock full access