如何在两个类中同时使用urllib2

2024-10-01 00:27:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个同步脚本。 我写了两个班来做这件事

class jira:
    def __init__(self, site, username, password):
        cj = cookielib.CookieJar()
        opener = urllib2.build_opener()
        opener.add_handler(urllib2.HTTPCookieProcessor(cj))
        urllib2.install_opener(opener)
        self.topurl = site
        loginUrl = deepcopy(self.topurl)
        loginUrl += '/rest/auth/1/session'
        user = {"username": username, "password": password}
        req = urllib2.Request(loginUrl)
        req.add_header("Content-Type", "application/json")
        req.add_data(json.dumps(user))
        try:
            res = urllib2.urlopen(req)
        except urllib2.HTTPError as err:
            print str(err)
            sys.exit(2)

以及

^{pr2}$

首先我初始化了类clearquest,然后初始化了jira

^{3}$

然后我想用它们来做一些事情,但当我使用cq时,它指出“未经授权”

我知道这一定是jira的开场白覆盖了clearquest的开场白,但我怎样才能避免呢?在


Tags: selfaddjsonusernamesitejirapasswordopener
1条回答
网友
1楼 · 发布于 2024-10-01 00:27:32

我已经解决了

class jira:
def __init__(self, site, username, password):
    cj = cookielib.CookieJar()
    self.opener = urllib2.build_opener()
    self.opener.add_handler(urllib2.HTTPCookieProcessor(cj))
    self.topurl = site
    loginUrl = deepcopy(self.topurl)
    loginUrl += '/rest/auth/1/session'
    user = {"username": username, "password": password}
    req = urllib2.Request(loginUrl)
    req.add_header("Content-Type", "application/json")
    req.add_data(json.dumps(user))
    try:
        res = self.opener.open(req)
    except urllib2.HTTPError as err:
        print str(err)
        sys.exit(2)

只是不使用urllib2.install\u opener(opener),它会安装当前的opener并覆盖预安装,然后使用自我开启器打开()而不是urllib.urlopen(),它将使用类的打开器打开请求

相关问题 更多 >