def request(): #encoded_xml = urllib.urlencode({'XML': read_xml()}) #encoded_xml = read_xml() headers = {'Authorization': AUTH_TOKEN,\ 'developerToken': DEVELOPER_TOKEN,\ 'clientCostumerID': CLIENT_ID} content = {'__rdxml': encoded_xml} #content = encoded_xml #content = {'__rdxml': read_xml2()} r = requests.post(URL, data=content,\ headers=headers) return r
这些组合似乎无效。
头由于某种原因未设置。
只需直接发送xml字节即可:
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import requests xml = """<?xml version='1.0' encoding='utf-8'?> <a>б</a>""" headers = {'Content-Type': 'application/xml'} # set what your server accepts print requests.post('http://httpbin.org/post', data=xml, headers=headers).text
{ "origin": "x.x.x.x", "files": {}, "form": {}, "url": "http://httpbin.org/post", "args": {}, "headers": { "Content-Length": "48", "Accept-Encoding": "identity, deflate, compress, gzip", "Connection": "keep-alive", "Accept": "*/*", "User-Agent": "python-requests/0.13.9 CPython/2.7.3 Linux/3.2.0-30-generic", "Host": "httpbin.org", "Content-Type": "application/xml" }, "json": null, "data": "<?xml version='1.0' encoding='utf-8'?>\n<a>\u0431</a>" }