加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python urllib2中的自定义方法

发布时间:2020-12-20 11:15:37 所属栏目:Python 来源:网络整理
导读:使用urllib2,我们能够使用“GET”或“POST”以外的方法(提供数据时)吗? 我挖到了库中,似乎使用GET或POST的决定“方便”与请求中是否提供数据有关. 例如,我想与CouchDB数据库进行交互,这需要诸如’DEL’,’PUT’之类的方法.我想要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,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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读