Response auf http post auslesen

@Chrisjim: Ich war mal so frei deine doppelten Themen an dieser Stelle zusammenzutackern, da Doppelthreads mit derselben Frage-/Problemstellung gemäß der Netiquette (Nr.12) unerwünscht sind, und möchte dich desweiteren darum bitten, in deinen Beiträgen auf die Groß- und Kleinschreibung zu achten, wie in der Netiquette (Nr.15) erwünscht.

Vielen Dank!

mfg Maik
 
Die Ergebnisse des Formulars auf dem anderen Server verwendest du in den $_POST['Variable'] ... ^^
Die kannste in ne extra Variable verbaun, oder so verwenden und bearbeiten ^^
 
Wenn ich Chrisjim richtig verstanden habe, verwendet er einen Webservice und will dessen XML-Antwort weiterverwenden. Der Webservice selbst liest die Parameter natürlich mittels $_POST und generiert damit seine Rückgabe, das nützt Chrisjim aber nix - deswegen nochmals der Hinweis auf mein Posting oberhalb.
 
Nochmal das ganze "grafisch" dargestellt

meineseite1.php => http post an externeseite.php -> meineseite2.php => antwort von externeseite.php

funktioniert nicht...


es muss so aussehen: meineseite1.php => Post an meineseite2.php

meineseite2.php baut intern eine HTTP Connection auf, postet das ganze an externeseite.php und wertet die antwort aus.

Ein Beispielcode für die meineseite2.php so frei raus:

PHP:
$curl = curl_init();
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, "cookiefile");
curl_setopt($curl, CURLOPT_COOKIEJAR, "cookiefile");
curl_setopt($curl, CURLOPT_URL, "http://webserice.de/site.php");
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($_POST));

$XML_Antwort = curl_exec($curl);

$XML = new SimpleXMLElement($XML_Antwort);

echo $XML->code;
 
Wow!

Tausend Dank für so viele Antworten.

Ich werde erst am Montag an diesem Projekt weiterprogrammieren, setzte das 'Thema' aber jetzt schonmal auf erledigt.
 
Ich denke es sollte kein Problem sein Daten mit nem Formular weiter zu leiten und zu verarbeiten...
Ob man das nu alles auf einem Server macht oder auf 2en is dabei egal, es ist das gleiche...

Das einzige was Problematisch ist, ist die Frage: Was mache ich, wenn der 2te Server und der dortige Skript NICHT mir gehört?
In dem Fall kann man sich nur an den Besitzer wenden und um kooperation bitten ^^
 
Hallo zusammen,

also erstes wollte ich sagen, dass ich eure Tips heute angewendet hab (war bis heute krank) und es sehr schnell zu gewünschten Resultat geführt hat. Danke nochmal!

Mein Code sieht nun so aus:

PHP:
<?
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $apihost);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $poststring);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($curl);

curl_close($curl);
>?

eine mögliche Antwort wäre:

PHP:
<?xml version="1.0" encoding="utf-8" ?> <response stat="ok"> <host>xxxx</host> <token>yyyy</token> </response> <!--[2008-06-26 10:32:53]-->

Diese Antwort möchte ich nun auslesen - dh ich möchte stat, host und token erfahren.
Den host und das token konnte ich problemlos auslesen, jedoch habe ich extreme Probleme damit an das Attribut dranzukommen.

Hier mein Code:

PHP:
$xml = simplexml_load_string($result);

$attrs1 = $xml->response[0]; 
echo $attrs1["stat"];
echo '<br /><br />host: '.$xml->host[0]; 
echo '<br /><br />token: '.$xml->token[0];

Was ich eigentlich insgesamt verwirrend finde (was wohl auch die Quelle meines Problems ist), ist dass mir
PHP:
echo $result;
PHP:
xxxx yyyy
ausspuckt - also nur den host und token ohne xml tags etc - wie kann simpelxml dann jedoch das token und den host erkennen - bzw warum spuckt mir
PHP:
echo htmlspecialchars($result)
Den kompletten XML Code aus

:confused::confused::confused:
 
Hast du dir denn auch den Quelltext anzeigen lassen wenn du nur xxxx yyyy siehst... weil die Browser interpretieren es ohne XML Header als HTML und versuchen es halt so gut zu parsen wie es geht und verwerfen die übrigen Tags.

PHP:
$attrs1 = $xml->response[0]; 
echo $attrs1["stat"];
echo '<br /><br />host: '.$xml->host[0]; 
echo '<br /><br />token: '.$xml->token[0];

wundert mich ein wenig das es funktioniert, da simplexml immer ab dem Wurzelelement, also in deinem Fall response die Daten verarbeitet. Dazu brauchst du nicht [0] bei den Feldern da es eh nur ein unterelement gibt. Also sollten die Ausgaben so aussehen:
PHP:
echo $xml["stat"];
echo '<br /><br />host: '.$xml->host; 
echo '<br /><br />token: '.$xml->token;
 
ja das mit dem Code wollte ich auch grade schreiben und mich da korrigieren (recht dumm von mir) - jetzt bleibt halt immernoch mein Problem, dass mein Script aus irgendeinem Grund das 'Wurzelelement' <response> überspringt...

richtig geschrieben wär der Code doch? (also das zum Attribut 'stat'=... führen müsste...)


Der folgende 'Test' widerspricht nämlich wiederum dem Resultat meines Codes:

PHP:
echo $xml->getName() . "\n";

foreach ($xml->children() as $child)
{
    echo $child->getName() . "\n";
}

Output:

PHP:
response host token

Folgt das einer Logik, die ich nicht erkenne - mache ich etwas falsch, was per Zufall zu einem Resultat führt - oder gibts es da vielleicht einen Bug?

(meine Php etc. Version falls das eine Rolle spielen könnte:

Apache 2.2.8
MySQL 5.0.51a
PHP 5.2.5 + PHP 4.4.8 + PEAR )
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück