我有这个xml字符串我想发布到API网址,我一直在检查文档,并想出了类似的东西:
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)
但是,我得到了:
...
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
看起来我错过了一些明显的东西,但我无法弄清楚它是什么,有什么帮助吗?