shinke1987.net
雑多な備忘録等のはず。
他のカテゴリ・タブ
目次
PR

PHPでcURL関数を利用してJSON取得する例

2024-07-31 2024-07-31
カテゴリ: PHP

前提

楽天ウェブサービスのAPIを利用するので、
楽天市場のアカウントを利用してアプリケーションID等を取得する必要があるかもしれません。

cURL関数を利用する要件

PHP 8.0.0 以降の場合

libcurlパッケージの7.29.0以降のバージョンが必要。

確認手順

LinuxやMac環境なら、下記コマンドを実行する。

$ php -i | grep cURL

表示された結果が次の形であれば使用可能。

念のためhttpsが使えることも確認するために、下記コマンドを実行する。

$ php -i | grep Protocols | grep https
$ php -i | grep 'SSL =>'

表示された結果が下記のようであれば使用可能。

Protocols => dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtmp, rtmpe, rtmps, rtmpt, rtmpte, rtmpts, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
SSL => Yes

参考資料

JSONデータ取得用URLを確認

楽天ウェブサービスのAPI Test Form にて何らかのJSONデータを取得し、その際のURLを控えておく。

コード

<?php

$url = 'https://app.rakuten.co.jp/services/api/で始まる、JSONデータ取得用URL';
// 下記のfile_get_contents関数でも取得できる。
//$result = file_get_contents($url);
//var_dump($result);

$cUrlHandler = curl_init($url);

// HTTPレスポンスステータスコードで400以上が返ってきたらエラーとする。
curl_setopt($cUrlHandler,CURLOPT_FAILONERROR, true);

// cURL関数の実行にかけられる時間を30秒に設定。
curl_setopt($cUrlHandler,CURLOPT_TIMEOUT, 30);

// HTTPSプロトコルを使用するよう設定。
curl_setopt($cUrlHandler, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);

// 成功した場合、取得結果を返すよう設定。
curl_setopt($cUrlHandler, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($cUrlHandler);

if ($result === false) {
    echo curl_error($cUrlHandler);
}

curl_close($cUrlHandler);

var_dump($result);

結果確認

上記コードを実行すると、成功すればJSONデータが表示される。
失敗するとエラーメッセージが表示される。

同一カテゴリの記事