804 Stimmen

Wie sende ich eine POST-Anfrage mit PHP?

Eigentlich möchte ich die Inhalte lesen, die nach der Suchanfrage kommen, wenn diese abgeschlossen ist. Das Problem ist, dass die URL nur POST Methoden, und es werden keine Maßnahmen mit GET Methode...

Ich muss alle Inhalte mit Hilfe von domdocument o file_get_contents() . Gibt es eine Methode, mit der ich Parameter mit POST Methode und lesen Sie dann den Inhalt über PHP ?

9voto

Basj Punkte 36025

Ausgehend von der Hauptantwort verwende ich Folgendes:

function do_post($url, $params) {
    $options = array(
        'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => 'POST',
            'content' => $params
        )
    );
    $result = file_get_contents($url, false, stream_context_create($options));
}

Beispiel für die Verwendung:

do_post('https://www.google-analytics.com/collect', 'v=1&t=pageview&tid=UA-xxxxxxx-xx&cid=abcdef...');

0 Stimmen

Hallo Basj. ich verstehe das nicht. Ich habe dein Beispiel ausprobiert und es hat bei mir nicht funktioniert. Könntest du bitte eine Anwendung für eine URL zeigen wie https://jsonplaceholder.typicode.com/todos/1 ? Vielen Dank im Voraus

5voto

Arindam Nayak Punkte 7298

Ich war auf der Suche nach einem ähnlichen Problem und habe einen besseren Ansatz gefunden, dies zu tun. Also hier geht es.

Sie können einfach die folgende Zeile in die Umleitungsseite (z. B. page1.php) einfügen.

header("Location: URL", TRUE, 307); // Replace URL with to be redirected URL, e.g. final.php

Ich brauche dies, um POST-Anfragen für REST API-Aufrufe. Diese Lösung kann sowohl Postdaten als auch benutzerdefinierte Kopfzeilenwerte weiterleiten.

Hier ist der Referenzlink .

2 Stimmen

Dies beantwortet die Frage, wie man eine Seitenanfrage umzuleiten no Wie sende ich eine POST-Anfrage mit PHP? Dies würde zwar alle POST-Parameter weiterleiten, aber das ist keineswegs dasselbe

0 Stimmen

@DelightedD0D, Entschuldigung, ich habe den Unterschied nicht verstanden zwischen redirect a page request with POST param gegen send POST request . Für mich ist der Zweck von beiden derselbe, korrigieren Sie mich, wenn ich falsch liege.

1 Stimmen

Gibt es eine Methode, die es mir ermöglicht, Parameter mit der POST-Methode zu senden und dann den Inhalt über PHP zu lesen? Der OP möchte, dass sein PHP-Skript eine Reihe von POST-Parametern erstellt und sie an eine andere PHP-Seite sendet und dass sein Skript die Ausgabe dieser Seite erhält. Diese Lösung würde einfach einen bereits geposteten Satz von Werten akzeptieren und sie an eine andere Seite weiterleiten. Sie sind ziemlich unterschiedlich.

3voto

Code Punkte 1464

[Bearbeiten]: Bitte ignorieren, nicht verfügbar in php jetzt.

Es gibt noch eine weitere, die Sie verwenden können

<?php
$fields = array(
    'name' => 'mike',
    'pass' => 'se_ret'
);
$files = array(
    array(
        'name' => 'uimg',
        'type' => 'image/jpeg',
        'file' => './profile.jpg',
    )
);

$response = http_post_fields("http://www.example.com/", $fields, $files);
?>

Klicken Sie hier für Details

3 Stimmen

Dazu ist eine PECL-Erweiterung erforderlich, die in den meisten Fällen nicht installiert ist. Ich bin nicht einmal sicher, ob sie noch verfügbar ist, da die Handbuchseiten entfernt wurden.

2 Stimmen

Klicken Sie hier für Details Link ungültig

3voto

Wellington Alves Punkte 119

Hier ok mit diesem Code:

<?php
$postdata = http_build_query(
    array(
        'name' => 'Robert',
        'id' => '1'
    )
);
$opts = array('http' =>
    array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);
$context = stream_context_create($opts);
$result = file_get_contents('http://localhost:8000/api/test', false, $context);
echo $result;?>

2voto

cweiske Punkte 28626

Versuchen Sie PEAR's HTTP_Request2 Paket, um POST-Anfragen einfach zu senden. Alternativ können Sie auch die curl-Funktionen von PHP verwenden oder ein PHP Stream-Kontext .

Mit HTTP_Request2 ist es auch möglich den Server auszuprobieren so dass Sie Ihren Code leicht in Einheiten testen können

10 Stimmen

Ich würde Sie gerne sehen, um es auszuarbeiten, wenn möglich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X