function getTenki($areaCode, $skinCode, $apiCode) { $serverId = 's054'; // サーバーID $userDirectory = 'd679dcd0-8369f02b-b92e3c5d-70359b7a'; // ユーザーディレクトリ $apis = array('4' => array('label' => '乾燥肌注意報', 'directory' => 'daily-dry-comment', 'skin' => true, 'hair' => false), '6' => array('label' => '日焼け&シミ', 'directory' => 'daily-sunburn-comment', 'skin' => true, 'hair' => false)); $skins = array('1' => array('label' => '敏感肌'), '2' => array('label' => '乾燥肌'), '3' => array('label' => '脂性肌'), '4' => array('label' => '混合肌')); $apiDirectory = $apis[$apiCode]['directory']; $uri = "http://{$serverId}.b-10.net/v1/{$userDirectory}/beauty/{$apiDirectory}/?area={$areaCode}"; $uri .= "&skin={$skinCode}"; //var_dump($uri); $dom = new DOMDocument(); $http = new HttpSample(); $http->setTimeout(7); // タイムアウトまでの時間を7秒にセット $success = $http->get($uri); if ($success) { $success = $dom->loadXml($http->getRawdata()); } // レスポンスの表示 $comment = ''; // 予報コメント $message = ''; // 予報コメントが利用できない場合の表示メッセージ $commentAvailable = false; // 予報のコメントが利用できるか否か if (!$success) { // リクエストに失敗した場合 $statusCode = $http->getStatusCode(); switch ($statusCode) { case 400: case 500: // APIリクエスト形式が正しくない、もしくはメンテナンス中 break; default: // APIリクエスト形式以外の理由で break; } $message = '予報を取得できません。'; } else { // リクエストに成功した場合、コンテンツの取り出しを試みます。 $xpath = new DOMXPath($dom); $queryForecasts = '/announce/forecast'; $forecasts = $xpath->query($queryForecasts); if ($forecasts->length == 0) { // forecast要素がない場合 $message = '予報は発表されていません。'; } else { $forecast = $forecasts->item(0); // content 要素を検索 $query = 'content'; $result = $xpath->query($query, $forecast); if ($result->length == 0) { } else { $content = $result->item(0); // content 要素から comment要素(美容コメント)を取得 $query = 'name'; $result = $xpath->query($query, $content); $forecastName = $result->item(0)->textContent; $query = 'level'; $result = $xpath->query($query, $content); $warnLevel = $result->item(0)->textContent; $warnLevelValue = $result->item(0)->getAttribute('value'); $query = 'star'; $result = $xpath->query($query, $content); $warnStar = $result->item(0)->textContent; $query = 'comment'; $result = $xpath->query($query, $content); $comment = $result->item(0)->textContent; $commentAvailable = true; } } } $ret['comment'] = $comment; $ret['level'] = $warnLevelValue; return $ret; }
<?php $uri = 'http://s054.b-10.net.b-10.net/v1/d679dcd0-8369f02b-b92e3c5d-70359b7a/beauty/daily-hairstyle-comment/?area=43'; $http = new HttpSample(); $http->setTimeout(7); // タイムアウトまでの時間を7秒にセット $success = $http->get($uri); if ($success) { $success = $dom->loadXml($http->getRawdata()); } var_dump($success); /** * HTTP通信のためのサンプルクラス。 * タイムアウトまでの秒数を設定したHTTP通信を行うためのサンプルクラスです。 * モジュール libcurl を要求します。 * @author Craid Co.Ltd. */ class HttpSample { /** * @var $timeout int */ private $timeout = 10; /** * @var $rawdata string */ private $rawdata = null; /** * @var $statusCode int */ private $statusCode = null;