requests请求get接口报错UnicodeEncodeError: ‘latin-1‘ codec can‘t encode characters in position 13-14
·
一.问题描述
在做接口自动化测试时,调用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编码。
修改代码如下:

重新运行,成功返回数据
更多推荐

所有评论(0)