On 14 dic, 23:44, Joshua Kugler <[EMAIL PROTECTED]> wrote: > I'm using HTTPlib to construct some functional tests for a web app we're > writing. We're not using urllib2 because we need support for PUT and > DELETE methods, which urllib2 does not do. > > We also need client-side cookie handling. So, I start reading about > cookielib and run across a problem. It's cookie handling is tied quite > tightly to urllib2's request object. httplib has somewhat different > semantics in its request object. So, you can use cookielib with httplib. > And cookie lib has no simple function (that I could find) for passing in a > set-cookie header and getting back a CookieJar object (or even a list of > Cookie objects).
What about correcting the first thing, making urllib2 support HEAD/PUT/ DELETE? import urllib2 class Request(urllib2.Request): def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None): urllib2.Request.__init__(self, url, data, headers, origin_req_host, unverifiable) self.method = method def get_method(self): if self.method is None: if self.data is not None: return "POST" else: return "GET" return self.method py> f = urllib2.urlopen(Request("http://www.python.org/", method="HEAD")) py> print f.info() Date: Sun, 16 Dec 2007 00:03:43 GMT Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_ssl/2.2.3 OpenSSL/ 0.9.8c Last-Modified: Sat, 15 Dec 2007 16:25:58 GMT ETag: "60193-3e6a-a24fb180" Accept-Ranges: bytes Content-Length: 15978 Connection: close Content-Type: text/html py> print len(f.read()) 0 Notes: a) Instead of urlopen(url,...) you must use urlopen(Request(url,...)) b) Redirection is not handled correctly in HTTPRedirectHandler (the request method should be copied over) c) I've not verified PUT / DELETE methods d) I'll try to make a proper patch later -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list