Ich muss eine Anforderung für den Zugriff auf die XML-Dienste erstellen, sollte es über ein HTTP verarbeitet werden. Ass sagt in der Dokumentation muss ich "4 zugehörige Parameter senden und diese Parameter werden als Identifikation arbeiten und werden die Anfrage stellen". Diese Parameter sollten wie Strings aussehen:Erstellen von XML-Anforderung mit urllib2
"codes=12345"
"user=user12345"
"password=pass12345"
"partner=part12345"
Laut Dokumentation ich habe zwei Systeme für die XML-Datei der Anfrage zu senden:
1 durch eine URL codiert im MIME-Format application/x-www-form- urlencoded: URL ("urlfile")
2 Durch Eingabe der Daten direkt in eine Variable, codiert im MIME-Format application/x-www-form-urlencoded: Direkt in einer Variablen ("xml").
Nach diesen meinen Anforderungsdaten wie folgt aussieht:
data='
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE petition SYSTEM "http://xml.example.com/xml/dtd/xml.dtd">
<petition>
<number>Country request</number>
<partner>Company</partner>
<type>5</type>
</petition>'
ich diese Anforderung mit Python-Bibliothek urllib2 erstellen. So, hier ist mein Code:
request = urllib2.Request(url, data)
request.add_header("codes=12345", "user=user12345", "password=pass12345", "partner=part12345")
Aber ich habe einen Fehler:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: add_header() takes exactly 3 arguments (5 given)
Also änderte ich Header dazu:
header = {'codes':'12345','user':'user12345','password':'pass12345','partner':'part12345'}
Und so nach, dass, wie mein Code sieht :
request = urllib2.Request(url, data, header)
response_xml = urllib2.urlopen(request)
response = response_xml.read()
print(response)
Aber ich bekam Antwort suc h wenn ich nicht Benutzer authentifiziert habe. Was mache ich falsch? Danke!
BTW, haben Sie versucht, mit 'https' statt' http' in der URL? –
Nein, habe ich nicht. Ich benutze die gleiche URL wie in der Dokumentation –