PH-Programmierung – file_get_contentes()
URL mit der POST-Methode abrufen

Office-AnwendungenSoftware

Sie möchten einen URL mit der POST-Methode auslesen und nicht mit der standardmäßigen GET-Methode. Beispielsweisemöchten Sie ein HTML-Formular abschicken.


URL mit der POST-Methode abrufen ___

Sie möchten einen URL mit der POST-Methode auslesen und nicht mit der standardmäßigen GET-Methode. Beispielsweisemöchten Sie ein HTML-Formular abschicken. Verwenden Sie dazu file_get_contents() mit einem Stream-Kontext:

$body = http_build_query(array(“affe” =>”onkel”, “nashorn” => “tante”));
$contextOptions = array(“http” =>array (“method” => “POST”,”header” =>”Content-type:application/x-www-formurlencoded\r\n” . “Content-length: “. strlen($body) . “\r\n”,”content” => $body
)
);
$context = stream_context_create($contextOptions);
$page = file_get_contents(“http://www.example.com/submit.php”, false,$context);

Etwas kürzer: Verwenden Sie die cURL-Erweiterung undsetzen Sie die Option CURLOPT_POST:

$c = curl_init(‘http://www.example.com/submit.php’);
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS,’affe=onkel&nashorn=tante’);
curl_setopt($c, CURLOPT_RETURNTRANSFER,1);
$page = curl_exec($c);
curl_close($c);

Wenn die cURL-Erweiterung nicht verfügbar ist, können Sie auch die Pear-Klasse HTTP_Request benutzen:

require ‘HTTP/Request.php’;
$r = new HTTP_Request(‘http://www.example.com/submit.php’);
$r->setMethod(HTTP_REQUEST_METHOD_POST);
$r->addPostData(‘affe’,’onkel’);
$r->addPostData(‘nashorn’,’tante’);
$r->sendRequest();
$page = $r->getResponseBody();

Das Versenden eines POST-Requests erfordert eine besondere Behandlung jedes einzelnen Arguments. Bei einem GET-Request befinden sich diese Argumente im Query-
String; bei einem POST-Request kommen sie dagegen in den Body der Anfrage. Außerdem benötigt der Request einen Content-Length-Header, der dem Server die Länge
des im Request-Body zu erwartenden Inhalts mitteilt. Es ist insbesondere dann sinnvoll, einen URL mit POST an Stelle von GET abzurufen, wenn der URL andernfalls länger als etwa 200 Zeichen werden würde. Die HTTPSpezifikation 1.1 in RFC 2616 definiert keine Maximallänge für URLs, daher variiert das Verhalten zwischen verschiedenenWeb- und Proxy-Servern. Wenn Sie einen URL mit GET lesen und dabei unerwartete Ergebnisse oder den Status-Code 414 (»Request-URI Too Long«) erhalten, dann sollten Sie die Anfrage in einen POST-Request umwandeln.

Autor: swasi
Anklicken um die Biografie des Autors zu lesen  Anklicken um die Biografie des Autors zu verbergen