小Q-免费的数据能做大事情之天气部分

开篇

北京的雾霾天气越来越严重了,连外国人都知道,那北京当做案例来讲了,(下附视频连接)

http://mp.weixin.qq.com/s?__biz=MzI5NzExNjQ5Mg==&mid=2654614449&idx=1&sn=bcb93768cc53dddb4761c43710417f9c&chksm=f7776592c000ec843b58b2708bf5e6715a94b2557d1bcd8561cf5c467a7f0265b2157edef1ef&mpshare=1&scene=23&srcid=1213xiqLEBF5juYFft22fLJ0#rd)

雾霾这么严重,这么伤身体么,我们是不是应该做点什么防御一下呢,我记得女票手机上有一个仅有两个页面的APP(雾霾早知道)他就一个网络请求,请求到信息显示一下,不过画面比较low,不如我来做一个吧

命名与定义

项目命名:小Q

项目类型:工具类

项目内容:天气查询、万年历、时钟闹钟

准备

做一个APP让我写代码不难,难的是一些复杂的资源,比如说,图片、接口

1、接口准备:

其实小Q作为一款工具类型的APP,需要的接口信息并不难,

天气部分:

在百度的APIStore中都可以找到天气预报的接口,地址如下

http://apistore.baidu.com/

我申请的天气服务是一个免费版的中国和世界天气预报地址如下

http://apistore.baidu.com/apiworks/servicedetail/478.html

API简介 :

Paste_Image.png

API的简介连接里说的很详细了,也包括了OC调用方法,(代码如下)

NSString*httpUrl =@"http://apis.baidu.com/heweather/pro/weather";NSString*httpArg =@"city=beijing";[selfrequest: httpUrl withHttpArg: httpArg];-(void)request: (NSString*)httpUrl withHttpArg: (NSString*)HttpArg  {NSString*urlStr = [[NSStringalloc]initWithFormat:@"%@?%@", httpUrl, HttpArg];NSURL*url = [NSURLURLWithString: urlStr];NSMutableURLRequest*request = [[NSMutableURLRequestalloc]initWithURL: url cachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:10];    [request setHTTPMethod:@"GET"];    [request addValue:@"您自己的apikey"forHTTPHeaderField:@"apikey"];    [NSURLConnectionsendAsynchronousRequest: request        queue: [NSOperationQueuemainQueue]        completionHandler: ^(NSURLResponse*response,NSData*data,NSError*error){if(error) {NSLog(@"Httperror: %@%ld", error.localizedDescription, error.code);            }else{NSIntegerresponseCode = [(NSHTTPURLResponse*)response statusCode];NSString*responseString = [[NSStringalloc] initWithData:data encoding:NSUTF8StringEncoding];NSLog(@"HttpResponseCode:%ld", responseCode);NSLog(@"HttpResponseBody %@",responseString);            }        }];

返回json如下:

{"HeWeather data service 3.0": [{"status":"ok",//接口状态"alarms": [{//灾害预警,若所在城市无预警则不显示该字段,仅限国内城市"level":"黄色",//预警等级"stat":"预警中",//预警状态"title":"北京市怀柔区气象台发布暴雨黄色预警",//预警信息标题"txt":"目前怀柔北部山区局地降雨量已达35毫米,预计未来1至2小时降雨仍将持续,局地累计雨量将达到50到70毫米,山区请注意防范地质灾害。",//预警信息详情"type":"暴雨 "//预警天气类型}],"basic": {//基本信息"city":"北京",//城市名称"cnty":"中国",//国家"id":"CN101010100",//城市ID,所有城市ID请参见 http://www.heweather.com/documents/cn-city-list"lat":"39.904000",//城市维度"lon":"116.391000",//城市经度"update": {//更新时间"loc":"2015-07-02 14:44",//当地时间,如无特殊说明,以下时间均为当地时间"utc":"2015-07-02 06:46"//UTC时间}        },"now": {//实况天气"cond": {//天气状况"code":"100",//天气状况代码,所有天气代码和中英文对照以及图标请参见http://www.heweather.com/documents/condition-code"txt":"晴"//天气状况描述},"fl":"30",//体感温度"hum":"20%",//相对湿度(%)"pcpn":"0.0",//降水量(mm)"pres":"1001",//气压"tmp":"32",//温度"vis":"10",//能见度(km)"wind": {//风力风向"deg":"10",//风向(360度)"dir":"北风",//风向"sc":"3级",//风力"spd":"15"//风速(kmph)}        },"aqi": {//空气质量,仅限国内城市"city": {"aqi":"30",//空气质量指数"co":"0",//一氧化碳1小时平均值(ug/m³)"no2":"10",//二氧化氮1小时平均值(ug/m³)"o3":"94",//臭氧1小时平均值(ug/m³)"pm10":"10",//PM10 1小时平均值(ug/m³)"pm25":"7",//PM2.5 1小时平均值(ug/m³)"qlty":"优",//空气质量类别"so2":"3"//二氧化硫1小时平均值(ug/m³)}        },"daily_forecast": [//天气预报,国内7天,国际10天{"date":"2015-07-02",//预报日期"astro": {//天文数值"sr":"04:50",//日出时间"ss":"19:47"//日落时间},"cond": {//天气状况"code_d":"100",//白天天气状况代码"code_n":"100",//夜间天气状况代码"txt_d":"晴",//白天天气状况描述"txt_n":"晴"//夜间天气状况描述},"hum":"14",//相对湿度(%)"pcpn":"0.0",//降水量(mm)"pop":"0",//降水概率"pres":"1003",//气压"tmp": {//温度"max":"34",//最高温度"min":"18"//最低温度},"vis":"10",//能见度(km)"wind": {//风力风向"deg":"339",//风向(360度)"dir":"东南风",//风向"sc":"3-4",//风力"spd":"15"//风速(kmph)}        },        ......//略],"hourly_forecast": [//当天每小时天气预报{"date":"2015-07-02 01:00",//时间"hum":"43",//相对湿度(%)"pop":"0",//降水概率"pres":"1003",//气压"tmp":"25",//温度"wind": {//风力风向"deg":"320",//风向(360度)"dir":"西北风",//风向"sc":"微风",//风力"spd":"12"//风速(kmph)}        },        ......//略],"suggestion": {//生活指数,仅限国内城市"comf": {//舒适度指数"brf":"较不舒适",//简介"txt":"白天天气多云,同时会感到有些热,不很舒适。"//详细描述},"cw": {//洗车指数"brf":"较适宜","txt":"较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"},"drsg": {//穿衣指数"brf":"炎热","txt":"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。"},"flu": {//感冒指数"brf":"少发","txt":"各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。"},"sport": {//运动指数"brf":"较适宜","txt":"天气较好,户外运动请注意防晒。推荐您进行室内运动。"},"trav": {//旅游指数"brf":"较适宜","txt":"天气较好,温度较高,天气较热,但有微风相伴,还是比较适宜旅游的,不过外出时要注意防暑防晒哦!"},"uv": {//紫外线指数"brf":"中等","txt":"属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。"}        }    }]}

API错误码

限制类错误.png

调用方法错误.png

代理平台错误.png

特殊处理:

因为本条API为免费版,所以API方做了一些限制(图1),

Paste_Image.png

每天6000次,每秒请求30次,为了避免并发使用量过大,我注册了三个账号,得到了三个APPKEY,然后通过一个随机数,随机选择APPKEY,最为参数请求,这样几乎可以每秒并发90次,每天请求18000次(我这样算不对对,对吧)

雾霾数据:

雾霾数据的API也是使用一个免费的空气质量指数连接如下

http://apistore.baidu.com/apiworks/servicedetail/116.html

使用方法如下:

Paste_Image.png

OC调用事例

NSString*httpUrl =@"http://apis.baidu.com/apistore/aqiservice/citylist";NSString*httpArg =@"";[selfrequest: httpUrl withHttpArg: httpArg];-(void)request: (NSString*)httpUrl withHttpArg: (NSString*)HttpArg  {NSString*urlStr = [[NSStringalloc]initWithFormat:@"%@?%@", httpUrl, HttpArg];NSURL*url = [NSURLURLWithString: urlStr];NSMutableURLRequest*request = [[NSMutableURLRequestalloc]initWithURL: url cachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:10];    [request setHTTPMethod:@"GET"];    [request addValue:@"您自己的apikey"forHTTPHeaderField:@"apikey"];    [NSURLConnectionsendAsynchronousRequest: request        queue: [NSOperationQueuemainQueue]        completionHandler: ^(NSURLResponse*response,NSData*data,NSError*error){if(error) {NSLog(@"Httperror: %@%ld", error.localizedDescription, error.code);            }else{NSIntegerresponseCode = [(NSHTTPURLResponse*)response statusCode];NSString*responseString = [[NSStringalloc] initWithData:data encoding:NSUTF8StringEncoding];NSLog(@"HttpResponseCode:%ld", responseCode);NSLog(@"HttpResponseBody %@",responseString);            }        }];}

错误码如下:

Paste_Image.png

Paste_Image.png

Paste_Image.png

本套餐限制较少

Paste_Image.png

文/齐广东(简书作者)

原文链接:http://www.jianshu.com/p/796045254bac

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 每次远行,火车一定是首选的交通工具。我这次与z9再次结缘,这趟车上北京开往杭州的直达列车,卧铺的环境还是不错的,是...
    林奎阅读 445评论 0 0
  • 本周刷爆朋友圈的是 小李子终于凭借《荒野猎人》的勇敢牺牲 获得了奥斯卡奖, 不管是不是小李子的粉丝都松了一口气 他...
    阿翼阅读 300评论 1 0