python urllib2中的自定义方法

使用urllib2,我们能够使用“GET”或“POST”以外的方法(提供数据时)吗?

我挖到了库中,似乎使用GET或POST的决定“方便”与请求中是否提供数据有关.

例如,我想与CouchDB数据库进行交互,这需要诸如’DEL’,’PUT’之类的方法.我想要urllib2的处理程序,但需要自己进行方法调用.

我不希望将第三方模块导入我的项目,例如CouchDB python api.所以,请不要走那条路.我的实现必须使用python 2.6附带的模块. (我的设计规范要求使用准系统PortablePython发行版).在导入外部模块之前,我会使用httplib编写自己的接口.

非常感谢你的帮助

最佳答案 你可以像这样继承urllib2.Request(未经测试)

import urllib2

class MyRequest(urllib2.Request):
    GET = 'get'
    POST = 'post'
    PUT = 'put'
    DELETE = 'delete'

    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:
            return self.method

        return urllib2.Request.get_method(self)

opener = urllib2.build_opener(urllib2.HTTPHandler)
req = MyRequest('http://yourwebsite.com/put/resource/', method=MyRequest.PUT)

resp = opener.open(req)
点赞