使用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)