文章目录
一、有问题的 Python 代码
二、代码执行结果
三、究竟哪里错了?
一、有问题的 Python 代码
prourl="http://xxx.code.xxx.xxx/api/"
mytoken="xxasasxxxdsdsaasxasasaxxx"
def Addissue(projectid, userid, description, title):
body = {
"description" : description,
"title": title,
"assignee_ids": userid
}
http_headers = {
'Accept': 'accept: */*',
'PRIVATETOKEN': mytoken
}
addurl = '%s/%s/issues' % (prourl, projectid)
ar = requests.post(addurl, body, headers=http_headers)
arj = ar.json()
print ar
print arj
return arj["id"]
if __name__ == "__main__":
projectid = "111"
title = "mytest"
description = "testtest"
userid = "111111"
issueid=Addissue(projectid, userid, description, title)
二、代码执行结果
先说结论,
上面这段代码的某个地方的写法是有问题的,
这个错误并不影响执行,也就是说代码逻辑执行完后,是能完成 “添加 issue” 的效果的。
但是,这段代码返回的内容比较诡异,
代码中,本来预期是会返回一个 id 的,但是实际并没有(代码中 print 出来 debug 了) :
{u’message’: u’unknown error’}
三、究竟哪里错了?
CSDN 的各位大佬们,
你们能看出来上面那段代码,哪里的写法有问题么?
.
.
.
.
.
.
.
.
.
.
.
.
思
.
.
.
.
.
考
.
.
.
.
.
时
.
.
.
.
.
间
.
.
.
.
.
.
.
.
.
.
.
.
反正我是边看边测试折腾了一下午,搞得两眼昏花,愣是没找到问题在哪里。
而且也找身边的几位同学帮看了下,也是没看出来问题在哪里。
.
.
.
折
.
.
.
.
.
腾
.
.
.
.
.
时
.
.
.
.
.
间
.
.
.
.
最后,在当晚,终于还是找到了问题点!
问题就是:
http_headers 里面的 Accept value 写错了…
各位朋友,你们找到这个问题了么? 花了多长时间找到的呢?
看起来显而易见的问题,
却找了大半天才发现,确实太不应该了.
为什么我一直没找到这个问题呢?
我反思了一下:
是因为我一直觉得 http_headers 不可能写出问题,所以前期压根就没有去检查它;
而是反复在 url ( 比如用 urllib.urlencode 格式化键值之类的) 和 requests.post 本身上找问题,
得出教训: 诡异难解的问题,通常会出在那些容易被忽略的地方!
以后编码出现意料之外的问题的时候,还是需要更仔细一些,全面逐行排查才行!!!
把这个问题记录在 CSDN ,谨记教训!