【问题标题】:Can access JIRA API with cURL but not Requests可以使用 cURL 访问 JIRA API,但不能使用 Requests
【发布时间】:2014-08-25 05:07:41
【问题描述】:

我正在编写一些脚本来从 JIRA 问题中下载附件。作为概念验证,我使用 cURL(在 Windows 机器上通过 Cygwin 64 位)浏览了 JIRA API,并且能够使用以下 cURL 命令验证和检索问题的完整表示(JSON 格式):

curl -u username:password -k -X GET https://jira.localhost.com/jira/rest/api/2/issue/{issuekey}

但是,一旦我开始在 python 中编写脚本(使用 requests 模块),相同的请求将不再通过

import requests
from requests.auth import HTTPBasicAuth

r = requests.get("https://jira.wgt.com/jira/rest/api/2/issue/{issueKey}", auth = HTTPBasicAuth(username, password), verify = False)
print response.status_code
print response.text

哪个打印:

404

{"errorMessages":["Issue Does Not Exist"],"errors":{}}

使用 Charles,我还可以看到服务器返回了 301 错误(可能来自将 https 重定向到 http?)。也许请求无法正确处理重定向?任何关于如何处理这个问题的意见都会很棒

【问题讨论】:

  • 如果涉及重定向,很可能(如果您使用的是 2.3.0 请求)我们会自动剥离身份验证以确保您的安全。您应该检查 response.history,如果那里有响应,请检查它们的请求标头。同样,您可以检查此响应的标头并查找“授权”。它很可能在来自重定向之一的请求的标头字典中,但不在为最终响应发送的请求中。

标签: python python-2.7 curl python-requests jira-rest-api


【解决方案1】:

对我来说,下一个代码工作得很好:

import requests
url = "http://localhost:8080/jira/rest/api/2/issue/TEST-1"
r = requests.get(url, auth=("admin", "admin"))
print r.status_code
print r.json()

希望这也能解决您的问题。另外,检查您的 JIRA 设置 - 当您安装 JIRA 时,您指定了您的主页。就我而言,它是 http://localhost:8080/jira,当我尝试使用一些 Attlassian 示例并使用 http://localhost:8080/rest/api/v2/issue/issue 时,它也对我不起作用。此base_url 在您的 JIRA 属性文件中指定。

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 2019-01-20
    • 2016-10-14
    • 2019-06-06
    • 1970-01-01
    相关资源
    最近更新 更多