stream_context_create() を使用して POST/GET リクエストをシミュレートする PHP の方法と例の分析
この記事では、PHP が stream_context_create() を使用して POST/GET リクエストをシミュレートする方法を主に、例、使用方法、および関連する注意事項の形式で詳細に分析します。以下
場合によっては、サーバー側で POST/GET やその他のリクエストをシミュレートする必要があります。つまり、シミュレーションを PHP プログラムに実装する必要があります。言い換えれば、PHP プログラムで配列が与えられた場合、この配列を別のアドレスに POST/GET するにはどうすればよいでしょうか?もちろん、CURL を使用すると簡単ですが、CURL ライブラリを使用しない場合はどうなるでしょうか。実は、PHP には関連する関数がすでに実装されており、その関数が次に説明する stream_context_create() です。
コードを直接表示します。これが最良の方法です:
$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://localhost/test2.php のコードは次のとおりです:
$data = $_POST; echo '<pre class="brush:php;toolbar:false">'; print_r( $data ); echo '';
実行結果:
Array ( [foo] => bar [baz] => boom [site] => localhost [name] => nowa magic )
説明する重要なポイント:
1. 上記のプログラムは http_build_query() 関数を使用しています。詳細については、前の記事「PHP が http_build_query を使用する方法」を参照してください。 () を使用して URL 文字列を構築します。」
2. stream_context_create() は、POST によるアクセス、プロキシの使用、ヘッダーの送信など、ファイルを開くためのコンテキスト オプションを作成するために使用されます。ストリームを作成するだけです。別の例を挙げてみましょう:
$context = stream_context_create(array( 'http' => array( 'method' => 'POST', 'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)). "Content-type: application/x-www-form-urlencoded\r\n", 'content' => http_build_query(array('status' => $message)), 'timeout' => 5, ), )); $ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context);
3. stream_context_create によって作成されたコンテキスト オプションは、ストリームとファイル システムの両方に使用できます。これは、ファイル ハンドルを使用せずにファイル名を直接操作する file_get_contents、file_put_contents、readfile などの関数でより便利です。 stream_context_create へのヘッダーの追加は関数の一部にすぎません。プロキシやタイムアウトなども定義できます。これにより、Web にアクセスする機能は、curl よりも弱くなります。
4. stream_context_create() の関数: テキストデータストリームを作成して返し、fopen() のタイムアウト設定、プロキシサーバー、リクエストメソッド、ヘッダー情報の設定などの特殊な処理に使用できます。 file_get_contents() およびその他のプロセス。
5. stream_context_create は、タイムアウト オプションを追加することで file_get_contents のタイムアウト処理を解決することもできます:
$opts = array( 'http'=>array( 'method'=>"GET", 'timeout'=>60, ) ); //创建数据流上下文 $context = stream_context_create($opts); $html =file_get_contents('http://localhost', false, $context); //fopen输出文件指针处的所有剩余数据: //fpassthru($fp); //fclose()前使用
概要: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。
関連する推奨事項:
PHP Excelファイルを読み取るためのExcel実装と簡単な例
PHP MVCフレームワークskymvcはマルチファイルアップロード実装メソッドをサポートします
以上がstream_context_create() を使用して POST/GET リクエストをシミュレートする PHP の方法と例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











コンテキストとは、プログラムが実行されるときの環境や状態情報のことで、変数の値、関数の呼び出しスタック、プログラムの実行場所など、プログラムが対応付けられるようにするためのさまざまな情報が含まれます。さまざまなコンテキストに基づいて決定を行い、対応する操作を実行します。

ストリーム操作は Java8 のハイライトです。 java.util.stream は非常に強力ですが、実際の作業ではほとんど使用していない開発者がまだ多くいます。最も不満の理由の 1 つは、デバッグが難しいということです。実際、最初の頃はそうでした。 as stream は DEBUG では使用できません 1 行のコードだと、実際には次のステップになると多くの操作が一度に渡されるため、どの行に問題があるのか判断するのが困難です。プラグイン: JavaStreamDebugger 使用している IDEA バージョンが比較的新しい場合、このプラグインはすでに含まれているため、インストールする必要はありません。まだインストールされていない場合は、手動でインストールしてから以下に進みます。

コンテキストを使用して Go でリクエスト キャッシュを実装する方法 はじめに: Web アプリケーションを構築するとき、パフォーマンスを向上させるためにリクエストをキャッシュする必要があることがよくあります。 Go 言語では、コンテキスト パッケージを使用してリクエスト キャッシュ機能を実装できます。この記事では、コンテキスト パッケージを使用してリクエスト キャッシュを実装する方法を紹介し、読者の理解を助けるコード例を示します。コンテキストとは何ですか? : Go 言語では、コンテキスト パッケージは複数のゴルーチン間を渡す方法を提供します。

コンテキストを使用して Go でリクエスト リンク トラッキングを実装する方法: マイクロサービス アーキテクチャでは、リクエスト リンク トラッキングは、複数のマイクロサービス間のリクエストの配信と処理を追跡するために使用される非常に重要なテクノロジです。 Go 言語では、コンテキスト パッケージを使用してリクエスト リンク トラッキングを実装できます。この記事では、リクエスト リンク トラッキングにコンテキストを使用する方法とコード例を紹介します。まず、コンテキスト パッケージの基本概念と使用法を理解する必要があります。 context パッケージはメカニズムを提供します

java8 のストリームは maxpublicstaticvoidmain(String[]args){Listlist=Arrays.asList(1,2,3,4,5,6);Integermax=list.stream().max((a,b)->{if ( a>b){return1;}elsereturn-1;}).get();System.out.println(max);}注: ここでは、サイズは正と負の数値および 0 の値によって決定されます。直接書く代わりに if(a>b){returna;}elseretur

コンテキストを使用して Go でリクエスト タイムアウト制御を実装する方法 はじめに: ネットワーク リクエストを行うと、リクエスト タイムアウトの問題が頻繁に発生します。ネットワーク要求が長時間応答しないと、サーバー リソースが無駄になるだけでなく、全体的なパフォーマンスにも影響します。この問題を解決するために、Go 言語ではリクエストのタイムアウト制御を実装するために使用できるコンテキスト パッケージが導入されました。この記事では、コンテキスト パッケージを使用して Go でリクエスト タイムアウト制御を実装する方法を紹介し、対応するコード例を添付します。 1. コンテキストパッケージ co を理解する

コンテキストを使用して Go でリクエストの再試行戦略を実装する方法 はじめに: 分散システムを構築する場合、ネットワーク リクエストは必然的にいくつかの失敗に遭遇します。システムの信頼性と安定性を確保するために、通常、再試行戦略を使用してこれらの失敗したリクエストを処理し、リクエストの成功率を高めます。 Go 言語では、コンテキスト パッケージを使用してリクエストの再試行戦略を実装できます。この記事では、Go でコンテキスト パッケージを使用してリクエストの再試行戦略を実装する方法をコード例とともに紹介します。 1. とは

Go 言語のコンテキスト パッケージは、プログラム内でリクエスト コンテキスト情報を渡すために使用され、パラメータを渡したり、リクエストをインターセプトしたり、複数のゴルーチンにわたる関数間の操作をキャンセルしたりできます。 Go で context パッケージを使用するには、まず「context」パッケージをインポートする必要があります。以下は、コンテキスト パッケージを使用してリクエスト パラメーターの受け渡しを実装する方法を示す例です。 packagemainimport("コンテキスト"
