现在项目中有需要显示所在位置天气状况的需求,网上查了下,很多都是首先借助某些网站,获取自身ip所在的城市,然后再借助天气网站提供的api接口,提供城市编码然后获取天气状况。但是这种方法,ip网站往往不可靠,ip网站崩掉或者更换网址之后就没法用了。
后来查到一种方法, 那就是使用curl wttr.in方法获取天气。该方法原理和上面应该是类似的,不过不用自己操心ip和天气接口的事,只要去请求就行,网站会返回你想要的结果(具体使用什么网站获得天气信息不很清楚)。当然了,这个网站崩掉也会有问题…(😓),还有就是天气精度也不确定。
curl wttr.in方法支持的功能很多,他支持自动获取地址所在地天气状况,也支持请求特定城市所在地天气状况;获得天气信息方面,可以获得温度,湿度,天气整体状况(阴晴等),所在位置等等,还支持可视化显示,支持json格式,支持命令行,总之,功能很强大。
某位博主写的介绍:linux命令行获取天气
项目github地址: wttr.in
回到正题,在C中要使用该方法的话,需要借助libcurl库,然后去发送请求,通过请求的回调函数,获得天气结果,然后根据需要,自己去解析结果即可。
直接上代码:
// 解析天气数据 这里解析函数写的比较low就不贴了,最好用正则表达式匹配,这块技能暂时不掌握
void ParseWeatherInnfo(char* wInfo){
printf("weather info %s,strlen is %d.\n",wInfo,strlen(wInfo));
}
// 接收数据回调函数
static size_t receive_data(void *data, size_t size, size_t nmemb, void <