Ich verwende die PHP-Funktion file_get_contents()
, um den Inhalt einer URL abzurufen, und verarbeite dann Header über die Variable $http_response_header
.
Das Problem besteht nun darin, dass einige der URLs Daten benötigen, um an die URL gesendet zu werden (z. B. Anmeldeseiten).
Wie mache ich das?
Mir ist klar, dass ich mit stream_context das vielleicht kann, aber mir ist nicht ganz klar.
Vielen Dank.
php
http
http-post
file-get-contents
Paras Chopra
quelle
quelle
Antworten:
Das Senden einer HTTP-POST-Anfrage mit
file_get_contents
ist eigentlich gar nicht so schwer: Wie Sie vermutet haben, müssen Sie den$context
Parameter verwenden.Im PHP-Handbuch finden Sie auf dieser Seite ein Beispiel: HTTP-Kontextoptionen (Anführungszeichen) :
Grundsätzlich müssen Sie einen Stream mit den richtigen Optionen erstellen (es gibt eine vollständige Liste auf dieser Seite) und ihn als dritten Parameter verwenden, um
file_get_contents
- nichts weiter ;-)Als Nebenbemerkung: Um HTTP-POST-Anfragen zu senden, verwenden wir im Allgemeinen Curl, das viele Optionen bietet - aber Streams sind eines der schönen Dinge von PHP, von denen niemand etwas weiß ... schade. .
quelle
content
muss nicht ein PHP - Array sein: es hat eine Abfragezeichenfolgeflag sein (dh es muss hat dieses Format:param1=value1¶m2=value2¶m3=value3
) ;; was bedeutet, dass Sie wahrscheinlich verwenden müssenhttp_build_query($_POST)
$postdata = http_build_query($_POST)
.\r\n
Zeilenumbrüchen - siehe: stackoverflow.com/a/2107792/404960Alternativ können Sie auch fopen verwenden
quelle
toto=1&tata=2
. Ich habe das jedoch nicht benutztfopen
.quelle
file_get_contents
anstelle vonfopen
+ verwendenstream_get_contents
. Und Sie schließen nicht einmal die "Datei". Siehe die akzeptierte Antwort von @PascalMARTIN.