代码之家  ›  专栏  ›  技术社区  ›  ac184

HP ALM python rest api-如何为api调用正确传递cookie

  •  0
  • ac184  · 技术社区  · 8 年前

    如何为RESTAPI调用传递HP ALM身份验证会话对象。我下面举几个例子,通过RESTAPI连接到HP ALM,以运行基本的CRUD操作。

    其中一个例子- https://github.com/vkosuri/py-hpalm/blob/master/hpalm/hpalm.py

    下面是建立连接的代码片段,它工作得非常好。登录时收到200个OK响应。

    headers = {'Cookie' : lwssocookie}
    headers["Accept"] = 'application/xml'
    login_url = self.base_url + '/qcbin/authentication-point/authenticate'
    
    resp = requests.get(login_url, headers=headers, auth=HTTPBasicAuth(self.username, self.password), verify=self.verify)
    alm_session = resp.headers['Set-Cookie']
    logger.debug("Is QC session launched: %s" %alm_session)
    cookie = ";".join((lwssocookie, alm_session))
    

    但是所有后续的操作都失败了,并且出现了未经授权的错误,即使我将cookie添加到了头部。

    self.headers['cookie'] = cookie
    url = self.base_url + '/qcbin/rest/domains/' + self.domain + '/projects/' + self.project + '/test-instances'
    response = requests.get(url, params=params, headers=self.getheaders())
    

    有人能建议如何举行会议来运行操作吗?我在这里遗漏了什么?

    我也试着在下面的“获取呼叫”中传递cookies,即使这样也不起作用。

    response = requests.get(url, params=params, headers=self.getheaders(), cookies=cookie)
    

    提前谢谢你

    1 回复  |  直到 7 年前
        1
  •  1
  •   Yves Martin    7 年前

    多亏了 requests.Session() ,不需要为cookie操作HTTP头。

    这是我为旧的ALM版本12.01运行的代码片段,由于 this post :

    session = requests.Session()
    session.verify = False
    
    auth = session.post(hpqc_server + "authentication-point/authenticate?login-form-required=y",
                        auth=HTTPBasicAuth(username, password))
    print("Authentication ", auth, auth.text, session.cookies)
    
    site_session = session.post(hpqc_server + "rest/site-session")
    print("Session ", site_session, site_session.text, session.cookies)
    
    check = session.get(hpqc_server + "rest/is-authenticated")
    print("Check ", check, check.text)
    
    # Enforce JSON output
    session.headers.update({ 'Accept': 'application/json' })
    projects = session.get(hpqc_server + "rest/domains/DOMAIN/projects")