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