To do a simple GET
request just supply the absolute URI
of the resource:
import httplib2 h = httplib2.Http() resp, content = h.request("http://bitworking.org/") assert resp.status == 200 assert resp['content-type'] == 'text/html'
Here is more complex example that does a PUT
of some text to a resource that requires authentication.
The Http instance also uses a file cache
in the directory .cache
.
import httplib2 h = httplib2.Http(".cache") h.add_credentials('name', 'password') resp, content = h.request("https://example.org/chap/2", "PUT", body="This is text", headers={'content-type':'text/plain'} )
Here is an example that connects to a server that supports the Atom Publishing Protocol.
import httplib2 h = httplib2.Http() h.add_credentials(myname, mypasswd) h.follow_all_redirects = True headers = {'Content-Type': 'application/atom+xml'} body = """<?xml version="1.0" ?> <entry xmlns="http://www.w3.org/2005/Atom"> <title>Atom-Powered Robots Run Amok</title> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <author><name>John Doe</name></author> <content>Some text.</content> </entry> """ uri = "http://www.example.com/collection/" resp, content = h.request(uri, "POST", body=body, headers=headers)
Here is an example of providing data to an HTML form processor. In this case we presume this is a POST form. We need to take our data and format it as "application/x-www-form-urlencoded" data and use that as a body for a POST request.
>>> import httplib2 >>> import urllib >>> data = {'name': 'fred', 'address': '123 shady lane'} >>> body = urllib.urlencode(data) >>> body 'name=fred&address=123+shady+lane' >>> h = httplib2.Http() >>> resp, content = h.request("http://example.com", method="POST", body=body)
Here is an example of using a proxy server:
import httplib2 import socks httplib2.debuglevel=4 h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'localhost', 8000)) r,c = h.request("http://bitworking.org/news/")