PHP OpenWeather

时间:2016-11-28 15:44:49

标签: php json openweathermap

好吧所以我在理解如何使用开放天气API方面遇到了一些麻烦。 我试过用它作为

<?php
    $request = file_get_contents('http://api.openweathermap.org/data/2.5/forecast/city?id=myidblablabla'); //example ID

    $jsonPHP  = json_decode($request);

    echo $jsonPHP->city;

?>

但我收到错误

  

捕获致命错误:无法转换类stdClass的对象   字符串

现在我还要问一个问题,我如何确定城市温度,湿度等?从我收到的代码中我只得到莫斯科

1 个答案:

答案 0 :(得分:1)

为了简化它,您也可以将json转换为数组。

$jsonPHP  = json_decode($request,true);

现在让我们简单地讨论一下。根据文档( http://openweathermap.org/current ),

另请注意我从未在之前使用此API。我只是想在这里帮忙。

如果您点击api.openweathermap.org/data/2.5/weather?lat=35&lon=139

它的响应为

{"coord":{"lon":139,"lat":35},
"sys":{"country":"JP","sunrise":1369769524,"sunset":1369821049},
"weather":[{"id":804,"main":"clouds","description":"overcast clouds","icon":"04n"}],
"main":{"temp":289.5,"humidity":89,"pressure":1013,"temp_min":287.04,"temp_max":292.04},
"wind":{"speed":7.31,"deg":187.002},
"rain":{"3h":0},
"clouds":{"all":92},
"dt":1369824698,
"id":1851632,
"name":"Shuzenji",
"cod":200}

现在假设您想要天气湿度,它只是:

天气:

echo $jsonPHP["weather"][0]["id"];

湿度:

echo $jsonPHP["main"]["humidity"];

另请注意,如果您点击 http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139 并获得响应

{"cod":401, "message": "Invalid API key. Please see http://openweathermap.org/faq#error401 for more info."}

对于这种情况,他们已在此处解释:

http://openweathermap.org/faq#error401 是:

  

问:API调用返回错误401

     

答:从2015年10月9日开始,我们的   API需要有效的APPID才能访问。请注意,这并不意味着   我们的API现在只是订阅 - 请花一点时间   注册一个免费帐户以获得密钥。

     

我们很抱歉给您带来不便,但这是必要的措施   将帮助我们更快,更可靠地为您提供服务。

     

对于FOSS开发者:我们欢迎免费和开源软件   愿意帮助你。如果您想在自由软件中使用OWM数据   应用程序请注册API密钥并提交描述的故障单   您的应用程序和API密钥已注册。 OWM将审核您的请求   如果在开源应用程序中使用,则提升密钥的访问限制。