HTTP POST mit PHP cUrl

Alles, was PHP betrifft, kann hier besprochen werden.

HTTP POST mit PHP cUrl

Postby Dan Occhio » 26. May 2014 12:45

Hallo Community,

ich habe ein kleines Problem mit PHP cUrl. Konkret sollen von meiner Client PHP-Datei Daten mit HTTP POST an eine Server PHP-Datei gesendet werden. Gesendet werden die Daten im RDF Format Turtle und in diesem Format sollen diese wieder zurück gesendet werden. Allerdings treten hier mehrere Probleme auf, da es scheint, dass der HTTP Header überschrieben wird. Zum einen wird aus dem POST ein GET Request, zum anderen werden die Accept und Content-Type Felder überschrieben. Meine Suche nach Lösungen blieb bis jetzt erfolglos. Bisher sieht mein Code zum Absenden des POSTs so aus:
Code: Select all
$ch = curl_init('http://localhost/lapis/Amazon/test.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $send_data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: text/turtle', 'Content-Type: text/turtle'));
$rdf = curl_exec($ch);
curl_close($ch);

Getestet habe ich es mit Firefox mit den Plugins Firebug und HttpFox. Hier ein Screenshot den HttpFox für den Request liefert.
Image
Informationen zu meinem System: Windows 7 Professional x64, XAMPP 1.8.1 mit PHP Version 5.4.7 bzw. XAMPP 1.8.3 mit PHP Version 5.5.9.

Könnt ihr mir bei der Lösung meines Problems helfen?

Viele Grüße,
Dan
Dan Occhio
 
Posts: 2
Joined: 26. May 2014 12:19
Operating System: Windows 7 Professional x64

Re: HTTP POST mit PHP cUrl

Postby Nobbie » 28. May 2014 10:45

Ich vermute, dass Du ein Verständnisproblem hast. Den Requestheader, den Du hier von Firefox zeigst, das ist mit einiger Sicherheit der HTTP Request, der auf dem Server (localhost) das PHP Script aufruft (via GET). Und zwar auf das Script "sender.php".

Dann erst wird in diesem PHP Script ein POST Request ausgeführt, das wird ebenfalls auf den Server "localhost" ausgeführt, allerdings als Ziel das Script "test.php" (so steht es zumindest drin). Und mit welchen HTTP Headern dieser zweite Request ausgeführt wird, das kann Dir Firefox ja gar nicht anzeigen, dass ist außerhalb seines Scopes.

Dein grundsätzliches Verständnisproblem wird offensichtlich dadurch erzeugt, dass sowohl der Sender als der Empfänger Deines POST Requests Dein localhost ist. Da fragt man sich schon, wieso machst Du nicht gleich einen POST Request (beispielsweise mit einem Formular) und liest die zurückkommenden Daten direkt aus? Es kann natürlich sein, dass das dennoch so benötigt wird, aber Du stolperst selbst am eigenen Design.
Nobbie
 
Posts: 13182
Joined: 09. March 2008 13:04

Re: HTTP POST mit PHP cUrl

Postby Dan Occhio » 28. May 2014 15:47

Hallo Nobbie,

du hast Recht, vielen Dank! Habe mir von der test.php die Daten des POSTs zurückgeben lassen, alles kam wunderbar an. Leider muss das Design so sein, da mehreren APIs eine entsprechende API "vorgeschaltet" wird. Der Client kommuniziert dann mit den vorgeschalteten APIs, welche momentan noch auf dem localhost laufen.

Viele Grüße,
Dan
Dan Occhio
 
Posts: 2
Joined: 26. May 2014 12:19
Operating System: Windows 7 Professional x64

Re: HTTP POST mit PHP cUrl

Postby Nobbie » 28. May 2014 21:48

Dan Occhio wrote:Leider muss das Design so sein, da mehreren APIs eine entsprechende API "vorgeschaltet" wird. Der Client kommuniziert dann mit den vorgeschalteten APIs, welche momentan noch auf dem localhost laufen.


"Leider" ist das nicht - es ist eben so.

Nur wissen wir jetzt hier nicht, ob es überhaupt noch ein Problem gibt. Das "Missverständnis" ist ja aufgelöst und test.php tut wohl auch das, was es soll.
Nobbie
 
Posts: 13182
Joined: 09. March 2008 13:04


Return to PHP

Who is online

Users browsing this forum: No registered users and 24 guests