Mit Python "request data" definieren

Django, Flask, Bottle, WSGI, CGI…
rofldofl
User
Beiträge: 11
Registriert: Donnerstag 9. November 2017, 09:00

Donnerstag 9. November 2017, 09:21

Hallo Leute,
ich bin noch neu in Python und habe eine Frage bezüglich eines HTTP requests von Script 1 an Script 2.
In meinem Fall ist Script 1 ein PHP Script welches via Curl ein XML File and Script 2 sendet.
Ich weiß wie ich die Daten von Script 1 an Script 2 sende jedoch nicht wie ich in Script 2 dass XML definiere.
Wenn ich die Frage unvollständig gestellt habe dürft ihr mich gerne korrigieren leider bin ich mit Python noch nicht so sehr vertraut.
Vielen Dank.


SCRIPT 1
[codebox=php file=Unbenannt.php]
$input_xml = "mypathtoxml/xml.xml";
$url = "http://192.168.0.236/get.py";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"xmlRequest=" . $input_xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
$data = curl_exec($ch);
curl_close($ch);
$array_data = json_decode(json_encode(simplexml_load_string($data)),
true);
[/code]


SCRIPT 2

Code: Alles auswählen

 xmlpost = #XML Daten die von Script 1 nach Script 2 gesendet wurden
Benutzeravatar
sls
User
Beiträge: 67
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Tannhauser Gate

Donnerstag 9. November 2017, 10:25

Hallo rofldofl,

was hast du denn in deinem zweiten Script sonst noch definiert, um den HTTP-Post zu empfangen? `xmlpost` trifft es ja als Bezeichner auch nicht ganz richtig, denn du willst hier doch das XML empfangen, und nicht senden.

Oder geht es dir rein darum, wie du in Script zwei den XML-Response parsen kannst?
With great processing power comes great responsibility.
Sirius3
User
Beiträge: 7594
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 9. November 2017, 11:54

@rofldofl: ich verstehe nicht, wie Skript1 und Skript2 zusammenhängen. Skript1 ließt von irgendeiner Adresse XML-Daten und macht dann nichts sinnvolles damit. Skript2 macht gar nichts. Also, was soll Skript1 machen und was soll Skript2 machen?
rofldofl
User
Beiträge: 11
Registriert: Donnerstag 9. November 2017, 09:00

Donnerstag 9. November 2017, 12:51

Hallo Kollegen,

vielen Dank für die Antworten. Ich habe wohl die Frage nicht vollständig gestellt.
Script 2 arbeitet mit dem XML File von Script 1 weiter.
Was mit dem XML mache funktioniert schon jedoch weiß ich nicht wie ich das XML parsen kann und definieren kann.
Ich habe gehofft dass mir hierzu jemand helfen kann.
Wenn ich immer noch was falsch ausgedrückt habe weißt mich gerne darauf hin.
Sirius3
User
Beiträge: 7594
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 9. November 2017, 13:01

@rofldofl: Script1 liest ein XML und wandelt es nach JSON und dann wieder in PHP-Strukturen. Wo kommt da Script2 ins Spiel?
Oder Script2 liest XML über eine URL ein und verarbeitet das weiter, aber was soll dann Script1?
Benutzeravatar
noisefloor
User
Beiträge: 2359
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Donnerstag 9. November 2017, 13:59

Hallo,

nach meinem Verständnis von Skript 1 liest dies doch eine XML-Datei, sendet die XML-Daten als POST-Request an eine URL und wandelt die Antwort des Servers nach JSON um.

Skript 2 erscheint nach alle, was du bisher gesagt hast: überflüssig.

Du schweigst dich aktuell noch darüber aus a) wie die Daten überhaupt an Skript 2 gehen soll (Netzerwerk, Datei, Datenbank, Skript 2 wird aus Skript 1 aufgerufen, ...), b) wie die Daten überhaupt aussehen und c) was meinst du mit "XML definieren"?

Grundsätzlich hat Python diverse Module zum Arbeiten mit XML an Bord. Im allgemeinen lautet die Empfehlung aber, das externe Modul lxml zu nehmen, weil es eine schönere API hat und damit einfacher zu nutzen ist.

Gruß, noisefloor
rofldofl
User
Beiträge: 11
Registriert: Donnerstag 9. November 2017, 09:00

Donnerstag 9. November 2017, 19:00

Script 1ist aus dem öffentlichen Netz erreichbar. Da script 2 auf einem internen Server liegt und nur der Server von Script 2 hinter bestimmte Firewalls sehen kann ist es notwendig dass ich von script 1 eine datei nach script 2 sende.
Mein Problem ist dass ich nicht weiß wie ich in script 2 die gesendete Datei parsen und definieren kann um mit dieser Datei weiter zu arbeiten.

Bedeutet also Script2 wird mit dem Request von script 1 gestartet.


Aufgezeichnet:
1. script 1 wird über dass Internet aufgerufen und erhält vom User daten
2. script 1 generiert ein xml aus den userdaten
3. Script 1 sendet dass xml an Script2

4. Script 2 soll mit den xml daten von script 1 weiter arbeiten
Ich weiß nur nicht wie ich in Python Script2 die xml Daten annehmen kann
Benutzeravatar
noisefloor
User
Beiträge: 2359
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Donnerstag 9. November 2017, 19:09

Hallo,
Script 1 sendet dass xml an Script2
WIE denn? Von der Sendemethode hängst natürlich auch ab, wie die Daten einzulesen sind...
Ich weiß nur nicht wie ich in Python Script2 die xml Daten annehmen kann
XML ist doch auch einfach nur platter Text (mit einem bestimmten Markup)....

Das einfachste wäre IMHO, dass Skript 1 die Daten in eine Datei schreibt die Skript 2 dann liest. Sollte ja ohne Probleme funktionieren, da beide Skripte auf dem gleichen Rechner laufen.

Gruß, noisefloor
rofldofl
User
Beiträge: 11
Registriert: Donnerstag 9. November 2017, 09:00

Donnerstag 9. November 2017, 19:37

noisefloor hat geschrieben:Hallo,
Script 1 sendet dass xml an Script2
WIE denn? Von der Sendemethode hängst natürlich auch ab, wie die Daten einz..
Die Daten werden über einen http request gesendet.

Und die scripts liegen nicht auf dem selben Server 8)
Sirius3
User
Beiträge: 7594
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 9. November 2017, 19:40

@rofldofl: was sind das für Userdaten und warum werden die nach XML verwandelt? Warum leitest Du die Anfrage nicht einfach direkt an den zweiten Server weiter?
rofldofl
User
Beiträge: 11
Registriert: Donnerstag 9. November 2017, 09:00

Donnerstag 9. November 2017, 19:44

Sirius3 hat geschrieben:@rofldofl: was sind das für Userdaten und warum werden die nach XML verwandelt? Warum leitest Du die Anfrage nicht einfach direkt an den zweiten Server weiter?
Dass wird in xml gewandelt weil die Userdaten klar definiert werden mussten und nicht immer dass selbe Muster enthalten.
Xml ist für mich zwingend erforderlich.
Benutzeravatar
noisefloor
User
Beiträge: 2359
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Donnerstag 9. November 2017, 20:26

Hallo,

gut, du sendest die Daten per HTTP POST Request an den Server, aus dem Skript zwei läuft. Verarbeitet der Software, der die Daten empfängt, diese direkt (aka: Skript 2 empfängt den POST Request selber?) oder müssen die auf dem Server nochmal von den empfangenden Software ans Skript weiter gegeben werden? Welche Software / welches Webframework empfängt die Daten? Das extrahieren von POST-Daten aus dem Request sollte ja easy sein.
Dass wird in xml gewandelt weil die Userdaten klar definiert werden mussten und nicht immer dass selbe Muster enthalten.
Das ist noch nicht wirklich ein Grund für XML...Das geht z.B. auch mit JSON (was einfacher weiter zu verarbeiten ist).
Xml ist für mich zwingend erforderlich.
Nun gut, dann ist das hier so.

Gruß, noisefloor
rofldofl
User
Beiträge: 11
Registriert: Donnerstag 9. November 2017, 09:00

Donnerstag 9. November 2017, 21:29

noisefloor hat geschrieben:Hallo,
gut, du sendest die Daten per HTTP POST Request an den Server, aus dem Skript zwei läuft. Verarbeitet der Software, der die Daten empfängt, diese direkt (aka: Skript 2 empfängt den POST Request selber?) oder müssen die auf dem Server nochmal von den empfangenden Software ans Skript weiter gegeben werden? Welche Software / welches Webframework empfängt die Daten? Das extrahieren von POST-Daten aus dem Request sollte ja easy sein.
Gruß, noisefloor
Die Zieladresse an die die Daten gesendet werden sollen ist Script2 selbst.
Auf der Zieladresse läuft ein NGINX Webserver mit WSGI Application auf dem Script 2 ausgeführt wird.
Ja Script 2 empfängt den POST Request selber
Benutzeravatar
noisefloor
User
Beiträge: 2359
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Donnerstag 9. November 2017, 21:36

Hallo,

gut - aber wo ist dann das Problem? Wie du das XML aus dem POST-Request "raus" bekommst, steht sicher in der Doku des von dir eingesetzten Webframeworks (dessen Namen du uns immer noch verschweigst).

Wie man XML mit Python verarbeitet bzw. welche Module man dafür nimmt habe ich in einem vorherigen Post schon gesagt. Wenn du damit Probleme hast, müsstest du a) mal ein Beispiel deines XML geben b) sagen, was konkret "verarbeitet" werden soll und c) sagen, welches Modul du für XML nutzt.

Gruß, noisefloor
Sirius3
User
Beiträge: 7594
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 9. November 2017, 21:37

@rofldofl: und welches Framework benutzt Du?

Der Code, den Du im ersten Post gezeigt hast, hat ja nichts mit dem was Du jetzt beschreibst. Kannst Du Code posten, den Du versucht hast und was passiert dort?
Antworten