0

我从以前的同事那里得到了一个程序,现在应该维护它。这个 python 脚本使用给定的 jql(在 API 上)询问我们的 Jira 实例。返回是与搜索条件匹配的所有问题的列表。但现在它不起作用,我在服务器( Ubuntu )和我的本地 Windows PC 上收到 Json 错误消息。注意:它运行了大约一年,但当时它起作用了。

这是脚本的样子:

import json
import subprocess

jiraSerachUrl = "https://ourJiraInstance.net/rest/api/2/search?jql=key%20=%20%22TEST-123%22"
jiraResponse = subprocess.Popen(["curl","-l","-s","-u", "jiraUser"+":"+"jiraUserPassword", "-X", "GET", jiraSerachUrl ],stdout=subprocess.PIPE,shell=True).communicate()[0]
## shell=True only added for Windows Instance
print(type(jiraResponse))
##print =  <class 'bytes'>
print(jiraResponse)
## print = b''
jiraJsonResponse = json.loads(jiraResponse.decode('utf-8'))
print(jiraJsonResponse)

jql/jira搜索地址返回如下(简答,返回任务的所有字段):

{"expand":"names,schema","startAt":0,"maxResults":50,"total":1,"issues": [{"expand":"operations,versionedRepresentations,editmeta,changelog,transitions, renderFields", "id":"145936","self":" https://ourJiraInstance.net/rest/api/2/issue/145936 ","key":"TEST-123","fields":{ “父母”:...

Windows PC上的错误如下

回溯(最后一次调用):文件“C:\Users\User\Desktop\test.py”,第 10 行,在 jiraJsonResponse = json.loads(jiraResponse.decode('utf-8')) 文件“C:\ Users\User\AppData\Local\Programs\Python\Python35-32\lib\json__init__.py”,第 319 行,加载返回 _default_decoder.decode(s) 文件“C:\Users\User\AppData\Local\Programs\ Python\Python35-32\lib\json\decoder.py”,第 339 行,在解码 obj 中,end = self.raw_decode(s, idx=_w(s, 0).end()) 文件“C:\Users\ User\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py",第 357 行,在 raw_decode 中从无 json.decoder.JSONDecodeError 引发 JSONDecodeError("Expecting value", s, err.value):期望值:第 1 行第 1 列(字符 0)

这是 Ubuntu 服务器上的错误(运行相同的脚本)

回溯(最后一次调用):文件“searchJira.py”,第 33 行,在 jiraJsonResponse = json.loads(jiraResponse) 文件“/usr/lib/python2.7/json/init .py ”,第 338 行,加载中return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 366, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end ()) 文件“/usr/lib/python2.7/json/decoder.py”,第 384 行,在 raw_decode 中引发 ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded

到目前为止,我尝试将 Json 负载更改为 simpleJson,但结果相同。更改 Json 应解码的格式(例如 unicode )无效。

4

1 回答 1

0

我尝试了一点,最终得到了它。通过用响应替换 curl 我终于得到了我想要的结果。我的请求现在看起来像这样:

r = requests.get(jiraSerachUrl,auth=HTTPBasicAuth(user, password), verify=False) 
jiraJsonResponse=json.loads(r.text)
于 2016-12-02T07:58:09.837 回答