huawei-modem-python-api-client
huawei-modem-python-api-client copied to clipboard
Sending sms in russian (utf-8) does not work
#!/usr/bin/python3
import huaweisms.api.user
import huaweisms.api.sms
import urllib
ctx = huaweisms.api.user.quick_login("admin", "admin", modem_host='192.168.3.1')
phone = "+79261234567"
message = "Тест"
result = huaweisms.api.sms.send_sms(ctx, phone, message)
print(result)
Output
Traceback (most recent call last):
File "/root/./test.py", line 10, in <module>
result = huaweisms.api.sms.send_sms(ctx, phone, message)
File "/usr/local/lib/python3.9/dist-packages/huaweisms/api/sms.py", line 77, in send_sms
r = post_to_url(url, xml_data, ctx, headers)
File "/usr/local/lib/python3.9/dist-packages/huaweisms/api/common.py", line 111, in post_to_url
r = requests.post(url, data=data, headers=headers, cookies=cookies, timeout=timeout, verify=verify)
File "/usr/lib/python3/dist-packages/requests/api.py", line 119, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/lib/python3/dist-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 699, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 394, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 234, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "/usr/lib/python3.9/http/client.py", line 1279, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.9/http/client.py", line 1324, in _send_request
body = _encode(body, 'body')
File "/usr/lib/python3.9/http/client.py", line 167, in _encode
raise UnicodeEncodeError(
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 90-93: Body ('Тест') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.
To correct this issue, I change the line 111 in the file /usr/local/lib/python3.9/dist-packages/huaweisms/api/common.py
.
It was:
r = requests.post(url, data=data, headers=headers, cookies=cookies, timeout=timeout, verify=verify)
I correct:
r = requests.post(url, data=data.encode(), headers=headers, cookies=cookies, timeout=timeout, verify=verify)
Implemented, so can be closed.
closing as per @mkotek 's comment