The httplib Module
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.
Posting Data to an HTTP Server
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 ...
Get Python Standard Library now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.