2014-07-03 93 views
1

我正在編寫一些腳本來從JIRA問題下載附件。作爲一個概念驗證,我使用cURL(通過Cygwin 64位在Windows機器上)瀏覽了JIRA API,並能夠使用以下cURL命令對問題進行身份驗證和檢索(以JSON格式):可以通過cURL訪問JIRA API但不需要

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

但是,一旦我(使用請求模塊)開始在Python腳本相同的請求將不再經過

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":{}} 

使用查爾斯我也能夠看到服務器已經返回301錯誤(可能從重定向https到http?)。也許請求無法正確處理重定向?關於如何處理這個任何投入將是巨大的

+0

如果涉及重定向,很可能(如果您的請求是2.3.0),我們會自動爲您的安全性剝離身份驗證。你應該檢查response.history,如果有響應,請檢查他們的請求頭。同樣,您可以檢查此響應的標題並查找「授權」。很有可能它來自一個重定向請求的頭字典,但不是發送給最終響應的請求。 –

回答

3

對我來說,下面的代碼工作完全正常:

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屬性文件中指定的。

+0

非常清晰和完整的答案,效果很好。 –

相關問題