Heim  >  Artikel  >  Backend-Entwicklung  >  PHP verwendet stream_context_create(), um die POST/GET-Anfragemethode und Beispielanalyse zu simulieren

PHP verwendet stream_context_create(), um die POST/GET-Anfragemethode und Beispielanalyse zu simulieren

墨辰丷
墨辰丷Original
2018-06-04 10:35:321866Durchsuche

In diesem Artikel wird hauptsächlich vorgestellt, wie PHP stream_context_create () zum Simulieren von POST/GET-Anfragen verwendet. Er analysiert detailliert das Prinzip von stream_context_create zum Simulieren von POST/GET-Anfragen in Form von Beispielen, Verwendungsmethoden und zugehörigen Vorsichtsmaßnahmen Als Referenz:

Manchmal müssen wir POST/GET und andere Anforderungen auf der Serverseite simulieren, das heißt, die Simulation im PHP-Programm implementieren. Mit anderen Worten: Wenn Ihnen in einem PHP-Programm ein Array gegeben wird, wie können Sie dieses Array an eine andere Adresse posten/erhalten? Natürlich geht das ganz einfach mit CURL, aber was ist, wenn Sie nicht die CURL-Bibliothek verwenden? Tatsächlich ist in PHP bereits eine verwandte Funktion implementiert, und diese Funktion ist stream_context_create(), über die ich als Nächstes sprechen werde.

Zeige dir den Code direkt an, so geht es am besten:


$data = array(
    'foo'=>'bar', 
    'baz'=>'boom', 
    'site'=>'localhost', 
    'name'=>'nowa magic'); 
$data = http_build_query($data); 
//$postdata = http_build_query($data);
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type:application/x-www-form-urlencoded',
        'content' => $data
        //'timeout' => 60 * 60 // 超时时间(单位:s)
    )
);
$url = "http://localhost/test2.php";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;


http:// Der Code von /localhost/test2.php lautet:


$data = $_POST;
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r( $data );
echo &#39;
';


Das laufende Ergebnis ist:


Array
(
  [foo] => bar
  [baz] => boom
  [site] => localhost
  [name] => nowa magic
)


Einige wichtige Punkte zur Erklärung:

1. Das obige Programm verwendet die Funktion http_build_query() zum vorherigen Artikel „PHP verwendet http_build_query()“-Methode zum Erstellen einer URL-Zeichenfolge》.

2. stream_context_create() wird verwendet, um Kontextoptionen zum Öffnen von Dateien zu erstellen, z. B. den Zugriff mit POST, die Verwendung eines Proxys, das Senden von Headern usw. Erstellen Sie einfach einen Stream, geben wir ein weiteres Beispiel:


$context = stream_context_create(array( 
    &#39;http&#39; => array( 
        &#39;method&#39; => &#39;POST&#39;, 
        &#39;header&#39; => sprintf("Authorization: Basic %s\r\n", base64_encode($username.&#39;:&#39;.$password)). 
        "Content-type: application/x-www-form-urlencoded\r\n", 
        &#39;content&#39; => http_build_query(array(&#39;status&#39; => $message)), 
        &#39;timeout&#39; => 5, 
    ), 
)); 
$ret = file_get_contents(&#39;http://twitter.com/statuses/update.xml&#39;, false, $context);


3. Die von stream_context_create erstellten Kontextoptionen können für den Stream verwendet werden ( stream) kann auch in Dateisystemen verwendet werden. Es ist nützlicher für Funktionen wie file_get_contents, file_put_contents und readfile, die direkt mit Dateinamen ohne Dateihandles arbeiten. Das Hinzufügen von Headern zu stream_context_create ist nur ein Teil der Funktion. Sie können auch Proxys, Timeouts usw. definieren. Dies macht die Funktion des Zugriffs auf die Bahn nicht schwächer als Curl.

4. Die Funktion von stream_context_create(): Erstellen Sie einen Textdatenstrom, geben Sie ihn zurück und wenden Sie verschiedene Optionen an, die für Timeout-Einstellungen, Proxyserver, Anforderungsmethoden und Header-Informationseinstellungen von fopen() verwendet werden können. file_get_contents() und andere spezielle Prozesse.

5. stream_context_create kann auch die Timeout-Verarbeitung von file_get_contents lösen, indem die Timeout-Option hinzugefügt wird:


$opts = array(
  &#39;http&#39;=>array(
  &#39;method&#39;=>"GET",
  &#39;timeout&#39;=>60,
 )
);
//创建数据流上下文
$context = stream_context_create($opts);
$html =file_get_contents(&#39;http://localhost&#39;, false, $context);
//fopen输出文件指针处的所有剩余数据:
//fpassthru($fp); //fclose()前使用

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, I Ich hoffe, es kann helfen. Das Lernen aller hilft.

Verwandte Empfehlungen:

phpSchnellsortierungsprinzip und Implementierungsmethode sowie Beispielanalyse

PHPExcel Methoden und einfache Beispiele zum Implementieren des Lesens von Excel-Dateien

Das PHP-MVC-Framework skymvc unterstützt mehrere Implementierungsmethoden für das Hochladen von Dateien

Das obige ist der detaillierte Inhalt vonPHP verwendet stream_context_create(), um die POST/GET-Anfragemethode und Beispielanalyse zu simulieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn