Подтвердить что ты не робот

Как я могу отправить тело xml с помощью библиотеки запросов?

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

Эти комбинации, похоже, не работают.

Заголовки не установлены по какой-либо причине.

4b9b3361

Ответ 1

Просто отправьте 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>"
}

Ответ 2

Перейдите в прямой XML вместо словаря.

Ответ 3

Я Python Noob и, когда я пытаюсь следовать примеру, я продолжаю получать UnicodeEncodeError.

xml = """<?xml version='1.0' encoding='utf-8'?>
<a>б</a>"""
headers = {'Content-Type': 'application/xml'}
print(requests.post('http://10.33.33.64/restapi/nodes', data=xml, headers=headers).text)

Это ошибка, которую я получаю

UnicodeEncodeError: 'latin-1' codec can't encode character '\u0431' in position 42: Body ('б') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.

Кроме того, в приведенном выше примере, где и как определяется фактическая полезная нагрузка XML?