У меня есть эта строка XML-я хочу, чтобы POST к API URL, я уже cheking документацию и придумал что-то вроде этого:сообщение XML-данных с помощью аутентификации питона
import urllib.request as ur
import urllib.parse as up
auth_handler = ur.HTTPBasicAuthHandler()
auth_handler.add_password(realm='something',
uri='http://api/api',
user=username,
passwd=passw)
opener = ur.build_opener(auth_handler)
opener.addheaders = [('User-agent', 'api-id'), ("Content-Type","applicaiton/xml;charset=utf-8")]
data = up.urlencode(('<?xml version="1.0" encoding="UTF-8"?>'
"<entry>"
"<episode>"+ep_no+"</episode>"
"<status></status>"
"<score></score>"
"<tags></tags>"
"</entry>"))
bin_data = data.encode('utf-8')
opener.open("http://api/api/add/"+id+".xml", data=bin_data)
Однако я» m получение:
...
File "/home/hairo/sandbox/post_test.py", line 124, in post
data = up.urlencode(('<?xml version="1.0" encoding="UTF-8"?>'
...
raise TypeError
TypeError: not a valid non-string sequence or mapping object
Похоже, что у меня что-то не хватает, но я не могу понять, что это такое, любая помощь?
Какая строка связана с ошибкой? – Wyrmwood
Добавлена строка ошибок. – Hairo
«Преобразовать объект сопоставления или последовательность двухэлементных кортежей». Ваш аргумент является одноэлементным кортежем. – Wyrmwood