Python. Отправить POST запрос со строкой на русском языке

Пытаюсь отправить post запрос

r = requests.post(api_server, data=xml, auth=(api_key, api_token))

В переменной xml лежит что-то наподобе:

xml = """<?xml version="1.0" encoding="UTF-8"?>
        <request>
            <description>{}</description>
        </request>""".format('Тест')

при отправке post запроса получаю ошибку

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 237-240: Body ('Тест') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.

Пытался вместо 'Тест' отправлять 'Тест'.encode('utf-8'). Всё отрабатывало без ошибок, но результат запроса оставался в кодировке и разумеется был нечитабелен. Вопрос в следующем: Как мне отправить post запрос, у которого в data будет строка на русском языке?


Ответы (1 шт):

Автор решения: sviridovmatvey

Нужно кодировать не конкретную строку, а весь набор данных, то есть

r = requests.post(api_server, data=xml.encode('utf-8'), auth=(api_key, api_token))
→ Ссылка