Frage von Plueschtier94, 30

PHP, HTTPREQUEST POST via Curl mit SimpleXML?

Hallo zusammen,

ich habe da mal eine Frage. Ich generiere mir mittels PHP & SimpleXML mein XML welches ich an eine Adresse via HTTP POST senden möchte.

Allerdings bekomme ich immer folgende Fehlermeldung: HTTP Status 400

Wenn ich die von SimpleXML generierte Datei abspeichere und direkt an die Adresse übergebe funktioniert es. Allerdings das generierte XML aus PHP heraus direkt dahin abzusenden klappt einfach nicht.

Hier mein Code: http://hastebin.com/exogalonir.php

hoffe es hat jemand eine Idee wie ich das realisiere. Lieben Gruß + Danke

Antwort
von coding24, 14

Du könntest dem Betreiber der Schnittstelle auch einfach dein XML zeigen, wenn du uns den Content hier nicht zeigenoder die Schnittstelle, die du verwendest (inkl. Doku) offenlegen möchtest.

Ansonsten: warum schickst du keinen urlencoded-String? Bzw. kein Array? Laut Doku http://php.net/manual/de/function.curl-setopt.php sollst du das Feld entweder urlencoden oder als array senden. Du schickst hier einen String. Klar geht das - aber wenn hier niemand weiß, wie der Request strukturiert werden soll (soll der z.B. in einem bestimmten Feld übertragen werden?), dann kann dahingehend niemand helfen.

Also: Link zur Doku des Webservices?

Kommentar von Plueschtier94 ,

Danke schonmal für deine Antwort. Sorry ich kenne mich damit wirklich nicht so aus. 

Link zur Doku: https://www.hood.de/interface/files/Hood_API_v1.0.5.zip

Kompletter Quelltext: http://hastebin.com/otefijubak.php

Kommentar von coding24 ,

Schau mal hier:
http://hastebin.com/hosirufubu.xml

Das funktioniert - muss also irgendwo an deinem generierten XML liegen :)

Antwort
von RakonDark, 17

Also ,

dein XML als POSTFIELD ???

und eine datei als POSTFIELD ???

Irgendwas stimmt da doch nicht beim Empfänger .

Wie schickt man den eine Datei als POSTFIELD ? Die URL ?

Sorry aber ohne die gegenseite zu kennen , macht das beschriebene irgendwie kein Sinn .

Wenn es eine Datei sein muss , wirst du kaum Data XML schicken können .

Und wenn es Data XML akzeptiert frag ich mich wie das mit einer gespeicherten XML funktionieren soll .

Also erklär uns mal wie die gegenseite das XML erwartet .


Kommentar von Plueschtier94 ,

Gerne erläutere ich dir was. Danke schonmal für deine Antwort:

Aus der Dokumentation: 

Die API ist unter folgender URL per HTTP POST-Befehl zu erreichen. Der Content der Anfrage darf nur XML beinhalten!
Der Header Content-Type muss „Content-Type: text/xml; charset=UTF-8” lauten.

Mehr Informationen gibt es dazu leider nicht.'
Es geht sich hier um Artikeldaten, weswegen ich also mehrmals und regelmäßig diese Daten an die API schicken muss. Deswegen der Dynamische Weg über PHP und SimpleXML. 

Mittels SimpleXML erstelle ich mir mein gewünschtes XML. 
Das sieht wenn ich es als Datei ausgebe super aus. 

Ich habe ein Firefox Tool namens HttpRequester. Damit kann ich die Datei testweise an die API Adresse schicken weswegen ich weiß, dass das funktioniert. 

Hoffe es reicht so? 

Antwort
von Malemeister, 17

Hallo,

wenn die Fehlermeldung der anderen API sagt das dein XML falsch ist, dann ist das wohl auch so.

Sprich du solltest mal deine XML Ausgabe überprüfen. Und vielleicht solltest du auch mal nachschauen ob curl bzw. der Request den String codiert/escaped.

Grüße

Kommentar von Plueschtier94 ,

Hab ja beigeschrieben dass ich mir den XML gleichzeitig als Datei ausgebe. In der Datei ist er vorzüglich. 

Ich muss dazu sagen dass ich zum ersten Mal SimpleXML ebenso zum ersten mal Curl verwende, weswegen ich auf ein wenig unterstützung hoffe. 

Kommentar von Malemeister ,

Du hast hier einen Auszug aus der API gepostet. Den solltest du dir nochmal genau anschauen.

Stichwort: Header

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten