好吧所以我在理解如何使用开放天气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的对象 字符串
现在我还要问一个问题,我如何确定城市温度,湿度等?从我收到的代码中我只得到莫斯科
答案 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将审核您的请求 如果在开源应用程序中使用,则提升密钥的访问限制。