PHP による cURL GET リクエスト
Web、および主に HTTPS を介して、特定のリソース表現を取得するために GET
リクエストを使用します。データを取得するには、GET
メソッドを使用します。
特に API および Web スクレイピングのシナリオでは、開発者は言語固有の方法を使用します。PHP で GET
リクエストを処理するために cURL
関数を使用します。
cURL
ライブラリは、初期化、接続設定、転送からリソースリターンまでの操作を処理します。これらすべての操作を実行するために、curl_close()
、curl_init()
から curl_exec()
などの組み込み関数を使用できます。
このチュートリアルでは、cURL``GET
リクエストのさまざまな使用例と、それを実現する対応する機能について説明します。
PHP でリクエストを取得するには、curl_init()
と curl_setopt()
を使用する
別のサーバーまたはユーザーから要求を取得するための一般的な形式には、次の基本機能を使用することが含まれます。
curl_init(); // initializes a cURL session
curl_setopt(); // changes the cURL session behavior with options
curl_exec(); // executes the started cURL session
curl_close(); // closes the cURL session and deletes the variable made by curl_init();
この記事全体で 4つの関数すべてと、cURL
ライブラリを使用して作成する GET
リクエストコードのほとんどが表示されます。
ここで、いくつかの使用例として、変数 $url
にリクエストを取得するサイトの URL を割り当て、curl_init()
関数を使用して cURL
セッションを開始します。その後、指定された URL で実行される cURL
転送のオプションを指定します。
最初の curl_setopt()
関数ステートメントは、$url
変数に値が割り当てられた URLtofetch
オプションを保持します。2 番目の curl_setopt()
関数ステートメントは、ブール値を保持する文字列として転送を返す
オプションを保持します。
<?php
$url = "https://reqbin.com/echo";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
?>
上記の PHP コードの出力は以下のとおりです。
PHP の API(JSON)で cURL
を使用する
通常、API と対話する場合、データ応答は JSON であることが多く、cURL
関数を使用すると、curl_getinfo()
および json_encode()
関数を使用して、属性と値のペアおよび配列形式でこれらのデータオブジェクトを適切に処理できます。とりわけ。
ここでは、デモ User
API を操作し、cURL
ライブラリを使用して JSON データを取得し、適切な関数を使用して JSON ファイルをエンコードします。
-
URL 変数と
cURL
セッションを初期化します。$url = 'https://jsonplaceholder.typicode.com/users'; // Sample example to get data. $resource = curl_init($url);
-
cURL
オプションと情報変数を設定します。curl_setopt($resource, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($resource); $info = curl_getinfo($resource); $code = curl_getinfo($resource, CURLINFO_HTTP_CODE);
-
デバッグして応答ステータスコードを確認します(オプションの手順)が、
200
が表示されます。echo $result.'<br>'; echo "<pre>"; print_r($info); echo "</pre>"; // Get response status code echo "<pre>"; print_r($code); echo "</pre>";
-
リソースをより適切に管理するために、
cURL
セッションを閉じます。curl_close($resource);
-
API から JSON を介して取得したデータを格納するための配列テンプレートを作成します。
// set_opt_array $user = [ 'name' => 'John Doe', 'username' => 'john', 'email' => 'john@example.com' ];
-
curl_init()
およびcurl_setopt_array()
を使用して、すべての重要なオプションを使用して URL から解析された JSON データを処理します。$resource = curl_init(); curl_setopt_array($resource, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => ['content-type: application/json'], CURLOPT_POSTFIELDS => json_encode($user), ]);
-
curl_exec()
およびcurl_close()
関数を使用して、初期化されたcURL
セッションを実行し、cURL
セッションを閉じて、すべてのリソースを解放します。ただし、PHP 8.0.0 以降では、curl_close()
関数は効果がありません。$result = curl_exec($resource); // creates and returns result curl_close($resource); echo $result;
コードの出力は、以下の PHP 多次元配列になります。
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
{
"id": 2,
"name": "Ervin Howell",
"username": "Antonette",
"email": "Shanna@melissa.tv",
"address": {
"street": "Victor Plains",
"suite": "Suite 879",
"city": "Wisokyburgh",
"zipcode": "90566-7771",
"geo": {
"lat": "-43.9509",
"lng": "-34.4618"
}
},
"phone": "010-692-6593 x09125",
"website": "anastasia.net",
"company": {
"name": "Deckow-Crist",
"catchPhrase": "Proactive didactic contingency",
"bs": "synergize scalable supply-chains"
}
},
{
"id": 3,
"name": "Clementine Bauch",
"username": "Samantha",
"email": "Nathan@yesenia.net",
"address": {
"street": "Douglas Extension",
"suite": "Suite 847",
"city": "McKenziehaven",
"zipcode": "59590-4157",
"geo": {
"lat": "-68.6102",
"lng": "-47.0653"
}
},
"phone": "1-463-123-4447",
"website": "ramiro.info",
"company": {
"name": "Romaguera-Jacobson",
"catchPhrase": "Face to face bifurcated interface",
"bs": "e-enable strategic applications"
}
},
....
]
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn