PHP で POST リクエストを送信する
-
PHP で
stream_context_create()およびfile_get_contents()関数を使用して CURL なしのメソッドを使用して POST リクエストを送信する - PHP で CURL を使用して POST リクエストを送信する
- PHP で CURL を使用して POST リクエストを送信するユーザー定義関数を作成する
http_build_query()、stream_context_create() および file_get_contents() 関数を使用して、CURL なしのメソッドを使用して PHP で POST リクエストを送信するメソッドを紹介します。
CURL を使用して PHP で POST リクエストを送信する方法を紹介します。CURL は、HTTP リクエストを Web サーバーに送信するために使用されます。CURL モジュールは通常 PHP にプリインストールされています。インストールされていない場合は、手動でインストールして、PHP を使用してサーバーのリクエストを送信する必要があります。
関数を作成して、CURL を使用して PHP で POST リクエストを送信する例を示します。この方法は、2 番目の方法と非常によく似ています。ユーザー定義関数を使用してリクエストを送信します。異なる記事データと URL を提供するコードを再利用できます。
PHP で stream_context_create() および file_get_contents() 関数を使用して CURL なしのメソッドを使用して POST リクエストを送信する
CURL を使用せずに、http_build_query()、stream_context_create()、file_get_contents() 関数などの関数を使用して、PHP で POST リクエストを送信できます。http_build_query() 関数を使用して、POST リクエストで送信するクエリパラメータを作成できます。http ヘッダー、メソッド、およびコンテンツを指定する配列を作成できます。stream_context_create() 関数を使用して、ストリーミングされたデータを処理します。file_get_contents() 関数は、URL の内容を文字列に読み込みます。$_POST グローバル変数を使用してデータを読み取ります。
たとえば、http_build_query() 関数を作成し、関数内に配列を作成します。キーname と id、および値 Robert と 1 をそれぞれ配列に作成します。変数 $postdata を使用して関数を割り当てます。HTTP メソッド、ヘッダー、およびコンテンツを指定する配列を作成します。キーmethod、header および content の値を POST、Content-type: application/x-www-form-urlencoded および変数 $postdata として設定します。この配列を別の配列 http 内にラップします。配列を変数 $opts に割り当てます。$opts を stream_context_create() 関数のパラメーターとして受け取り、それを変数 $context に割り当てます。file_get_contents() 関数を使用し、最初のパラメーターとして URL http://localhost/request.php を適用します。2 番目と 3 番目のパラメーターとして、ブール値 false と変数 $context を使用します。関数を変数 $result に割り当てて出力します。PHP ファイル request.php を作成し、$_POST 変数を使用して name および id キーをエコーします。
以下の例では、name と id は POST メソッドを使用して記事されるデータです。request.php ファイルは、$_POST 変数を使用してクエリパラメータを読み取ります。
サンプルコード:
# php 7.*
<?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/request.php', false, $context);
echo $result;
?>
# php 7.*
<?php
echo "Name: ". $_POST['name']. "<br>";
echo "ID: ". $_POST['id'];
?>
出力:
Name: Robert
ID: 1
PHP で CURL を使用して POST リクエストを送信する
CURL はクライアント URL の略です。CURL を使用して、PHP スクリプトを介して POST リクエストを送信できます。PHP バージョンでは、さまざまな curl 関数を実行するために curl モジュールが必要です。このメソッドでは、上記のメソッドと同様に http_build_query() 関数を使用してクエリパラメータを作成します。curl_init() 関数を使用して、スクリプトで CURL 接続を初期化できます。curl_setopt() 関数を、CURLOPT_URL、CURLOPT_POST、CURLOPT_POSTFIELDS などのいくつかのオプションとともに使用します。これらのオプションは、それぞれ URL を設定し、HTTP POST リクエストをリクエストし、データを POST します。curl_setopt() 関数を使用して URL の内容を返し、curl_exec() 関数を使用して POST リクエストを実行できます。
たとえば、キーname と id、および値 Wayne と 2 を配列 $fields に作成します。配列を http_build_query() 関数のパラメーターとして使用し、変数 $postdata を関数に割り当てます。curl_init() 関数を使用して CURL 接続を開き、変数 $ch に割り当てます。3つの curl_setopt() 関数を記述し、$ch 変数を 3つの関数すべての最初のパラメーターとして使用します。関数の 2 番目のパラメーターとして、オプション CURLOPT_URL、CURLOPT_POST、および CURLOPT_POSTFIELDS をそれぞれ 1 番目、2 番目、および 3 番目の関数に記述します。3つの関数で、3 番目のパラメーターをそれぞれ http://localhost/request.php、true、および $postdata として設定します。関数 curl_setopt() を呼び出し、最初のパラメーターとして $ch 変数、2 番目のパラメーターとして CURLOPT_RETURNTRANSFER オプション、3 番目のパラメーターとしてブール値 true を使用します。$result 変数から curl_exec($ch) 関数を呼び出し、$result を出力します。最初のメソッドと同じ request.php ファイルを使用します。
サンプルコード:
#php 7.x
<?php
$fields = [
'name' => 'Wayne',
'id' => 2,
];
$postdata = http_build_query($fields);
$ch = curl_init()
curl_setopt($ch,CURLOPT_URL, 'http://localhost/request.php');
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
?>
出力:
Name: Wayne
ID: 2
PHP で CURL を使用して POST リクエストを送信するユーザー定義関数を作成する
URL 入力と POST データを取得して POST リクエストを送信するメソッドを作成できます。この方法でも、2 番目の方法として CURL を使用します。以前と同じようにすべてのカール関数を使用します。このメソッドは、複数の URL とデータにコードを再利用することを目的としています。
たとえば、関数 httpPost() を作成し、変数 $url と $data を引数として取ります。curl_init() 関数を使用して curl 接続を開き、変数 $url をパラメーターとして使用します。2 番目のメソッドと同様に、3つの curl_setopt() 関数を使用します。curl_exec() メソッドを使用して POST データを実行します。配列 $data を作成し、キーname と id および値 Scott と 3 を作成します。http://localhost/request.php を URL として、$data 配列をデータとして、メソッド httpPost() を呼び出します。このメソッドは、上記の 2つのメソッドと同様に request.php ファイルも使用します。
コード例:
#php 7.x
<?php
function httpPost($url, $data){
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
echo $response;
}
$data = [
'name' => 'Scott',
'id' => 3
];
httpPost('http://localhost/request.php', $data);
?>
出力:
Name: Scott
ID: 3
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn