使用urllib进行POST请求时获取HTTP 400错误请求

时间:2020-01-08 11:31:04

标签: python-3.x

当我尝试在python3中使用urllib发布测试用例结果时,从testrail服务器获取HTTP 400错误请求。谢谢有人帮助我。谢谢!

下面是代码

import urllib.request
import json
import base64

data = {'results':[{'case_id': '123','status_id': '1','comment': 'This test passed', 'version': '0.14.0-W9'}]}
headers = {}
post_data = urllib.parse.urlencode(data).encode()
auth = base64.b64encode(b'user:pass')
auth = auth.decode()
headers['Authorization'] = 'Basic %s' % auth
headers['Content-Type'] = 'application/json'
request = urllib.request.Request("http://testrail.com/index.php?/api/v2/add_results_for_cases/272374", data = post_data, headers = headers)
response = urllib.request.urlopen(request).read()
result = json.loads(response)
print(result)

错误输出,

Traceback (most recent call last):
  File "p3.py", line 13, in <module>
    response = urllib.request.urlopen(request).read()
  File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request

1 个答案:

答案 0 :(得分:0)

感谢Tomalak和Amiy的快速建议。 我已经尝试了python3的testrailAPI库,它可以按预期工作。