PHPでPOSTリクエストを送信する代替方法
PHPでPOSTリクエストを送信する方法
PHPでPOSTリクエストを送信するには、主に次の2つの方法があります。
curl関数を使用する
curl
は、PHPでさまざまなHTTPリクエストを発行するためのライブラリです。
<?php
$ch = curl_init("https://example.com/api");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "data=value");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
curl_init("https://example.com/api")
: URLを指定してcurlセッションを開始します。curl_setopt($ch, CURLOPT_POST, 1)
: POSTリクエストであることを指定します。curl_setopt($ch, CURLOPT_POSTFIELDS, "data=value")
: POSTデータを設定します。curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1)
: レスポンスを文字列として返すように設定します。curl_exec($ch)
: リクエストを実行し、レスポンスを取得します。curl_close($ch)
: セッションを閉じます。
file_get_contents()関数を使用する
file_get_contents()
は、ファイルやURLの内容を取得するための関数です。
<?php
$data = http_build_query(array('data' => 'value'));
$url = "https://example.com/api";
$options = array(
'http' => array(
'method' => 'POST',
'content' => $data,
'header' => "Content-type: application/x-www-form-urlencoded"
)
);
$context = stream_context_create($ options);
$response = file_get_contents($url, false, $contex t);
echo $response;
http_build_query()
: POSTデータを作成します。stream_context_create()
: HTTPリクエストのオプションを設定します。file_get_contents()
: URLからコンテンツを取得します。
<?php
$ch = curl_init("https://example.com/api");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "data=value");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
解説:
<?php
$data = http_build_query(array('data' => 'value'));
$url = "https://example.com/api";
$options = array(
'http' => array(
'method' => 'POST',
'content' => $data,
'header' => "Content-type: application/x-www-form-urlencoded"
)
);
$context = stream_context_create($ options);
$response = file_get_contents($url, false, $contex t);
echo $response;
Guzzleライブラリを使用する
<?php
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://example.com/api', [
'form_params' => [
'data' => 'value'
]
]);
echo $response->getBody();
GuzzleHttp\Client
クラスをインスタンス化します。post()
メソッドを使用してPOSTリクエストを発行します。form_params
オプションを使用してPOSTデータを設定します。
cURLのオブジェクト指向インターフェースを使用する
cURL
のオブジェクト指向インターフェースを使用することもできます。
<?php
$curl = new Curl\Curl();
$curl->post('https://example.com/api', [
'data' => 'value'
]);
echo $curl->response;
Curl\Curl
クラスをインスタンス化します。
fopen()関数を使用する
fopen()
関数を使用して、HTTPリクエストを直接発行することもできます。
<?php
$url = 'https://example.com/api';
$data = http_build_query(['data' => 'value']);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
$response = curl_exec($ch);
curl_close($c h);
echo $response;
fopen()
関数を使用して、URLを開きます。fwrite()
関数を使用して、POSTデータを送信します。fgets()
関数を使用して、レスポンスを読み取ります。
php http post