2016-10-19 3 views
0

Я получаю:POST XML-файл с запросами

<error>You have an error in your XML syntax... 

, когда я запускаю этот питон скрипт я просто написал (я новичок)

import requests 

xml = """xxx.xml""" 

headers = {'Content-Type':'text/xml'} 

r = requests.post('https://example.com/serverxml.asp', data=xml) 

print (r.content); 

Вот содержание ххх .xml

<xml> 
<API>4.0</API> 
<action>login</action> 
<password>xxxx</password> 
<license_number>xxxxx</license_number> 
<username>[email protected]</username> 
<training>1</training> 
</xml> 

Я знаю, что XML является действительным, потому что я использую тот же XML для Perl-скрипта и содержимое печатаются обратно.

Любая помощь будет очень признательна, поскольку я очень новичок в python.

+1

Вы на самом деле не читает в файле. AFAIK параметр 'data' ожидает фактическое содержимое вашего XML-файла, а не его имя – UnholySheep

+3

Найдено [документация] (http://docs.python-requests.org/en/master/api/#requests.Session.post) * data - (необязательно) Словарь, байты или файл-подобный объект для отправки в тело запроса. * Поэтому вам нужно либо проанализировать XML-файл в том, что вы можете прикрепить или открыть файл, и передать этот объект в параметр – UnholySheep

ответ

2

Вы хотите предоставить данные XML из файла в requests.post. Но эта функция не откроет для вас файл. Он ожидает, что вы передадите ему файл-файл, а не имя файла. Вам нужно открыть файл перед вызовом request.post.

Попробуйте это:

import requests 

# Set the name of the XML file. 
xml_file = "xxx.xml" 

headers = {'Content-Type':'text/xml'} 

# Open the XML file. 
with open(xml_file) as xml: 
    # Give the object representing the XML file to requests.post. 
    r = requests.post('https://example.com/serverxml.asp', data=xml) 

print (r.content); 
+0

ваш ответ разрешил мою проблему. Как мне правильно закрыть этот вопрос? – BioRod

+0

Вы можете отметить мой ответ как принятый –

+0

Хорошо, я нажал на галочку, и он стал зеленым, поэтому я думаю, что это «Принято». – BioRod

Смежные вопросы