一.问题描述

在做接口自动化测试时,调用requests的get方法发送请求,报错,报错信息如下:

Traceback (most recent call last):
  File "D:\D1\code\AutoTest\python_interface_autotest\PythonInterfaceAutoTest\chapter7\base\base_request.py", line 102, in run_main
    res = self.send_get(url,data,headerMethod,header,cookie,ifWriteCookie)
  File "D:\D1\code\AutoTest\python_interface_autotest\PythonInterfaceAutoTest\chapter7\base\base_request.py", line 62, in send_get
    response = requests.get(url,headers=header,data=data,cookies=cookie,verify=False)
  File "D:\D1\IDEs\Python3.8.5\lib\site-packages\requests\api.py", line 76, in get
    return request('get', url, params=params, **kwargs)
  File "D:\D1\IDEs\Python3.8.5\lib\site-packages\requests\api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "D:\D1\IDEs\Python3.8.5\lib\site-packages\requests\sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "D:\D1\IDEs\Python3.8.5\lib\site-packages\requests\sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "D:\D1\IDEs\Python3.8.5\lib\site-packages\requests\adapters.py", line 439, in send
    resp = conn.urlopen(
  File "D:\D1\IDEs\Python3.8.5\lib\site-packages\urllib3\connectionpool.py", line 665, in urlopen
    httplib_response = self._make_request(
  File "D:\D1\IDEs\Python3.8.5\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "D:\D1\IDEs\Python3.8.5\lib\http\client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "D:\D1\IDEs\Python3.8.5\lib\http\client.py", line 1300, in _send_request
    body = _encode(body, 'body')
  File "D:\D1\IDEs\Python3.8.5\lib\http\client.py", line 164, in _encode
    raise UnicodeEncodeError(
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 13-14: Body ('新鲜') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.
输入数据不合法,get请求失败

根据报错提示定位到第62行

data = json.dumps(data,ensure_ascii=False)
response = requests.get(url,headers=header,data=data,cookies=cookie,verify=False)

二.问题解决

报错原因大概是请求参数中含有汉字,需要显式的使用utf-8编码。
修改代码如下:

在这里插入图片描述
重新运行,成功返回数据在这里插入图片描述

更多推荐