E405当尝试使用jira-python 0.25创建问题时



我已经使用jira-python有一段时间了,但到目前为止总是用于查询。现在我需要从python脚本创建一个新问题-它不适合我。

无论我做什么,我得到一个E405(方法不允许错误)。但这不是——再说一遍——权限问题。

为了尝试跟踪这一点,我使用curl手动发送POST命令。没问题,一切正常,问题就产生了。

所以,我假设我的代码错误地设置了create_issue的参数。我进入python,启用pdb,并尝试create_issue()调用。果然,我在jira-python库中得到了一个Exception。从raise_on_error向上移动堆栈,它看起来像这样:

    500         url = self._get_url('issue')
    501         r = self._session.post(url, headers={'content-type': 'application/json'}, data=json.dumps(data))
--> 502         raise_on_error(r)
    503 
    504         raw_issue_json = json.loads(r.text)

做了一个json.dumps(data)来恢复被输入的实际字符串并得到:

'{"fields": {"issuetype": {"name": "Bug"}, "summary": "RFU", "project": {"key": "TW"}, "components": [{"name": "A Component"}]}}'

然后我直接剪切并粘贴作为--data参数到curl。它运行良好。

这似乎意味着jira-python不工作(尝试0.25和0.18)。

也不是python版本问题(在python 2.7, 3.3, 3.4中尝试过)

我的create_issue()调用看起来像这样:

j.create_issue(project={'key':'TW'}, issuetype={'name':'Bug'}, summary='RFU', components=[{'name':'A Component'}])

所有指定的字段值都是有效的(尽管与这里显示的不同)

我为什么这么做是错的?这个功能不可能在库

中被破坏。

我在virtualenv's中工作,这是pip freeze的输出

argparse==1.2.1
ipython==2.1.0
jira==0.25
oauthlib==0.6.3
requests==2.3.0
requests-oauthlib==0.4.1
six==1.7.2
tlslite==0.4.6
wsgiref==0.1.2

用一个简单的pip install ipython jira命令

设置

BTW,如果我获取一个现有的问题,然后用合适的参数调用issue.update(),它工作得很好。

另一件事:我运行的是Ubuntu 14.04

好吧,我把它弄工作了-这是由于一些内部网络的变化。

我们的内部JIRA服务器的证书过期了。所以他们把它从https换成了http。

我用'server':'https://...''verify':False创建了我的jira实例来绕过证书错误。Jira-python可能只是通过HTTP连接,并将其用于所有查询。

但是当我们要POST到网站的时候,我们遇到了https和http的问题。

切换到'server':'http://...'并放弃'verify'选项使其工作

我在这里找到了一个提示

最新更新