Я пытаюсь получить данные о погоде от NOAA и проанализировать их, чтобы получить текущую температуру, влажность и другие значения. Я пытаюсь получить данные JSON со своего веб-сайта, который использует значения широты и долготы для получения данных о погоде местоположения. У меня возникают проблемы с получением данных, и я узнал, что мы должны использовать CURl, чтобы сделать это, и я понятия не имею об использовании CURL.
это URL, который я использую, чтобы получить данные
«https://api.weather.gov/points/$ Широта, долгота $ / прогноз».
Это то, что я попробовал, основываясь на одном примере, который я нашел здесь. Я хочу знать, как передать широту и долготу, и добавить прогноз в конце в URL
<?php
/**
* Created by PhpStorm.
*/$url='https://api.weather.gov/points/'; //noaa url of choice
$params=array('39.7456','-97.0892','forecast');
$curl = curl_init();
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $params);
curl_setopt($curl, CURLOPT_URL, $url);
$result = curl_exec($curl);
$data = json_decode($result);
curl_close($curl);
echo "<pre>";
echo json_encode($data, JSON_PRETTY_PRINT);
echo "<pre>";
?>
Просто добавьте координаты к URL.
<?php
$ch = curl_init('https://api.weather.gov/points/39.7456,-97.0892/forecast');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSLVERSION => 6,
CURLOPT_USERAGENT => 'Firefox',
]);
$response = curl_exec($ch);
if($response === false)
exit(curl_error($ch));
print_r(json_decode($response));
Несколько замечаний о коде:
curl_init
это то же самое, что установить его с curl_setopt(CURLOPT_URL
curl_exec
возвращается false
при неудаче, следовательно, $response === false
тестовое задание. Я использовал === в этом случае, иначе PHP может интерпретировать пустую строку как false
, что не имеет смысла в этом контексте.CURL_SSLVERSION_TLSv1_2
)Других решений пока нет …