如何使用urllib2制作HTTP DELETE方法?

urllib2是否支持DELETE或PUT方法? 如果是,请提供任何示例。 我需要使用活塞API。

你可以用httplib来完成它:

 import httplib conn = httplib.HTTPConnection('www.foo.com') conn.request('PUT', '/myurl', body) resp = conn.getresponse() content = resp.read() 

另外,看看这个问题 。 接受的答案显示了将其他方法添加到urllib2的方法:

 import urllib2 opener = urllib2.build_opener(urllib2.HTTPHandler) request = urllib2.Request('http://example.org', data='your_put_data') request.add_header('Content-Type', 'your/contenttype') request.get_method = lambda: 'PUT' url = opener.open(request) 

更正Raj的答案:

 import urllib2 class RequestWithMethod(urllib2.Request): def __init__(self, *args, **kwargs): self._method = kwargs.pop('method', None) urllib2.Request.__init__(self, *args, **kwargs) def get_method(self): return self._method if self._method else super(RequestWithMethod, self).get_method() 

您可以inheritanceurllib2.Request对象,并在实例化类时覆盖该方法。

 import urllib2 class RequestWithMethod(urllib2.Request): def __init__(self, method, *args, **kwargs): self._method = method urllib2.Request.__init__(*args, **kwargs) def get_method(self): return self._method 

由Benjamin Smedberg提供

您可以定义Request对象的子类,并按如下所示调用它:

 import urllib2 class RequestWithMethod(urllib2.Request): def __init__(self, *args, **kwargs): self._method = kwargs.pop('method', None) urllib2.Request.__init__(self, *args, **kwargs) def get_method(self): return self._method if self._method else super(RequestWithMethod, self).get_method() def put_request(url, data): opener = urllib2.build_opener(urllib2.HTTPHandler) request = RequestWithMethod(url, method='PUT', data=data) return opener.open(request) def delete_request(url): opener = urllib2.build_opener(urllib2.HTTPHandler) request = RequestWithMethod(url, method='DELETE') return opener.open(request) 

(这与上面的答案类似,但显示使用情况。)