3

REST API を使用して Python スクリプトから Jira v5.1 の問題を更新できるようにしたいと考えています。完全に機能する既存の問題の情報を抽出する次のコードがあります。

import urllib2
import urllib
import cookielib
import json

serverURL = 'http://jiraserver.com'

# Get the authentication cookie using the REST API
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
authURL = serverURL + '/rest/auth/latest/session'
creds = {'username' : jirauser, 'password' : passwd}
req = urllib2.Request(authURL)
req.add_data(json.dumps(creds))
req.add_header("Content-type", "application/json")
req.add_header("Accept", "application/json")
fp = opener.open(req)
fp.close()

queryURL = serverURL + '/rest/api/latest/issue/SANDBOX-150'
req = urllib2.Request(queryURL)
req.add_header("Content-type", "application/json")
req.add_header("Accept", "application/json")
fp = opener.open(req)
data = json.load(fp)
fp.close()

同じ問題を更新できるようにこれを拡張したいと思います。次のコードがあります。

queryURL = serverURL + '/rest/api/latest/issue/SANDBOX-150'

issueUpdate =  {
    'update': {
        'comment': [
            {
                'add': {
                    'body': 'this is a comment'
                }
            }
        ]  
    }
}
req = urllib2.Request(queryURL)
req.add_data(json.dumps(issueUpdate))
req.add_header("Content-type", "application/json")
req.add_header("Accept", "application/json")
fp = opener.open(req)
fp.close()

コードを実行しようとすると、次のエラー メッセージが表示されます。

File "/usr/lib64/python2.6/urllib2.py", line 397, in open
response = meth(req, response)
    File "/usr/lib64/python2.6/urllib2.py", line 510, in http_response
        'http', request, response, code, msg, hdrs)

    File "/usr/lib64/python2.6/urllib2.py", line 435, in error
        return self._call_chain(*args)

    File "/usr/lib64/python2.6/urllib2.py", line 369, in _call_chain
        result = func(*args)
    File "/usr/lib64/python2.6/urllib2.py", line 518, in http_error_default 
        raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
    urllib2.HTTPError: HTTP Error 405: Method Not Allowed

エラーは私のコードの「fp = opener.open(req)」を指しています。

解決策を見つけることができるかどうかを確認するために Web を検索しようとしましたが、うまくいきませんでした。私が間違っていることを誰かが知っていますか?

感謝と敬意

4

1 に答える 1

4

Python 2.7.x を使用している場合は、jira-python をお勧めします。これは、Jira との REST 通信全体を処理する Python パッケージです。

http://jira-python.readthedocs.org/en/latest/

于 2012-12-07T12:10:28.607 に答える