2016-10-19 4 views
0

Ich erhalte:POST XML-Datei mit Anfragen

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

, wenn ich diese Python-Skript ausführen Ich schrieb (ich bin ein Neuling)

import requests 

xml = """xxx.xml""" 

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

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

print (r.content); 

Hier ist der Inhalt des xxx .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> 

ich weiß, dass das xML gültig ist, weil ich die gleiche xml für einen perl-Skript verwenden, und der Inhalt wieder gedruckt werden.

Jede Hilfe wird sehr geschätzt, da ich Python sehr neu bin.

+1

Sie sind im Moment nicht in der Datei zu lesen. AFAIK der Parameter 'data' erwartet den tatsächlichen Inhalt Ihrer XML-Datei, nicht den Namen – UnholySheep

+3

Gefunden die [Dokumentation] (http://docs.python-requests.org/en/master/api/#requests.Session.post) * data - (optional) Dictionary, Bytes oder dateiähnliches Objekt, das im Hauptteil des Requests gesendet wird. * Sie müssen also die XML-Datei entweder analysieren, um sie anzufügen oder zu öffnen, und das Objekt an das Objekt übergeben Parameter – UnholySheep

Antwort

2

Sie möchten die XML-Daten aus einer Datei an requests.post übergeben. Diese Funktion öffnet jedoch keine Datei für Sie. Es erwartet, dass Sie ein Dateiobjekt an es übergeben, keinen Dateinamen. Sie müssen die Datei öffnen, bevor Sie requests.post aufrufen.

Try this:

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

Ihre Antwort löste mein Problem. Wie schließe ich diese Frage richtig ab? – BioRod

+0

Sie können meine Antwort als Akzeptiert markieren –

+0

Ok, ich klickte auf das Häkchen und es wurde grün, also denke ich, es ist "Akzeptiert". – BioRod

Verwandte Themen