可以用cURL访问JIRA API但无法用Requests
我正在写一个脚本,用来从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?)。也许requests模块没有正确处理这个重定向?如果有人能提供一些处理方法,那就太好了。
1 个回答
5
对我来说,下面的代码运行得非常好:
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
。当我尝试使用一些Atlassian的示例,并使用 http://localhost:8080/rest/api/v2/issue/issue
时,它也没有成功。这个 base_url
是在你的JIRA属性文件中指定的。