【接口平台】too many values to unpack

有小伙伴反馈,在执行用例时,报错 too many values to unpack
在这里插入图片描述
确实服务端出现了异常报错

Traceback (most recent call last):
  File "/Users/lluozh/work/git/SWAPI/util/httpTool/baseUtil.py", line 112, in POST
    response = requests.post(self._content_.url, data=self._content_.request_body, headers=self._content_.header, params=self._content_.query_params, proxies=self._content_.proxies, verify=False, timeout=HTTP_FILE_REQUEST_TIME_OUT)
  File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/api.py", line 116, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/sessions.py", line 519, in request
    prep = self.prepare_request(req)
  File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/sessions.py", line 462, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/models.py", line 316, in prepare
    self.prepare_body(data, files, json)
  File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/models.py", line 507, in prepare_body
    body = self._encode_params(data)
  File "/Users/lluozh/work/git/SWAPI/venv/lib/python3.7/site-packages/requests/models.py", line 97, in _encode_params
    for k, vs in to_key_val_list(data):
ValueError: too many values to unpack (expected 2)

too many values to unpack,字面上意思为太多值无法解包?

有人提到
原因是字典这个是一个迭代器对象,参考官方文档找到下列说明,字典只支持Key的遍历,如果想对key,value,则可以使用items方法
但是并无相关

查看这个接口的方法为POST,请求的参数:

[
   "llz-test-public-2/6e3a9bd76c754d5ebef69664b7cc0ba8.png"
]

响应值正确:

{
    "code": 0,
    "data": [],
    "message": "Ok"
}

这个接口请求应该无任何需要解析的部分呀?
此时小伙伴又反馈说使用postman请求是没问题的,试试,发现可以正常响应

再check一下代码中对于POST的请求,直接使用json格式的请求ok,那问题出在哪里?

发现用户设置该接口的请求body类型是x-www-form-urlencoded

OMG!将类型修改成json,请求成功

这个问题出现的部分原因是因为平台需要设置请求body的类型,后续可以考虑和postman一致,直接避免此类型问题的出现

原文地址:https://www.cnblogs.com/guanhuohuo/p/12533566.html