iOS: 目前天气API 整理

因天气预报服务,发现网上天气预报接口和环境数据接口方面资料比较乱,而且有不少内容已经失效,就整理下部分资料吧。

这里有一份知乎的回答可以参考 :(时间点2013-12-31)

http://www.zhihu.com/question/20521716

一、 接口基本固定到一个时间点无法使用,大部分接口已经失效

二、中国气象数据开放平台简直不能吐槽了,登录后总是返回刚才访问的页面,然后就跳到未登录界面,一直来回跳,就是登不了

对于(一)问题是有解决办法,方法来自@酷小孩的文章http://www.cnblogs.com/babycool/p/3575167.html 感激不尽

下面是用oc 语言写的获取方法

#define CITYWEATHERURL(Identifier) [NSString stringWithFormat:@"http://mobile.weather.com.cn/data/forecast/%@.html", Identifier]

NSURLCache *urlCache = [NSURLCache sharedURLCache];
  [urlCache setMemoryCapacity:1*1024*1024];
  NSURL *url = [NSURL URLWithString:CITYWEATHERURL(cityIdentifier)];
  NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
  [request setCachePolicy:NSURLRequestReloadRevalidatingCacheData];
  [request setURL:url];
  [request setHTTPMethod:@"GET"];
  [request setValue:@"application/json, text/javascript, */*; q=0.01" forHTTPHeaderField:@"Accept"];
  [request setValue:@"gzip" forHTTPHeaderField:@"Accepts-Encoding"];;
  [request setValue:@"zh-CN,zh;q=0.8" forHTTPHeaderField:@"Accept-Language"];
  [request setValue:@"http://mobile.weather.com.cn/" forHTTPHeaderField:@"Referer"];
  [request setTimeoutInterval:20];
  //缓存
  NSCachedURLResponse *responseU = [urlCache cachedResponseForRequest:request];
  if (responseU != nil) {
    [request setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData];
  }
  [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

    if ([data length] > 0 && connectionError == nil) {
      NSDictionary *jsonString = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
     //do something

    } else if ([data length] == 0 && connectionError ==nil) { // 没有数据

    } else if (connectionError != nil) {
      NSDictionary *jsonString = [NSJSONSerialization JSONObjectWithData:[responseU data] options:NSJSONReadingMutableLeaves error:nil];
       //do something
    } else {
    }
  }];

对于问题(二)无能为力

至于第三方天气服务尝试发现部分并不靠谱也可能我用的是免费版的吧,还有聚合数据服务可以尝试一下,但我并没有使用,不知道是否可行

时间: 2024-10-06 00:47:26

iOS: 目前天气API 整理的相关文章

iOS ReactiveCocoa 常用API整理

声明:本文转载自王隆帅 一.常见类 1.RACSiganl 信号类. RACEmptySignal :空信号,用来实现 RACSignal 的 +empty 方法: RACReturnSignal :一元信号,用来实现 RACSignal 的 +return: 方法: RACDynamicSignal :动态信号,使用一个 block - 来实现订阅行为,我们在使用 RACSignal 的 +createSignal: 方法时创建的就是该类的实例: RACErrorSignal :错误信号,用来

天气API接口大全(nohacks.cn 收集整理)

自序: 由nohacks.cn 收集整理,来源于网络,版权归原作者所有,基本收集了网络上能使用的大部分天气API接口,作者水平精力有限,难免有遗漏或错误的地方,欢迎反馈,作者网站:http://nohacks.cn 更新记录: 2015.3.2    更新云聚,增加天气网接口. 2015.2.28  增加百度天气图片,感谢网友彬子的反馈. 2015. 2.19 增加百度天气接口,更新中国天气网API. 目录: 1.  中国天气网 1.1  实时天气 API 接口(失效) 1.2  当天天气 AP

weather API 天气api接口 收集整理

腾讯 http://sou.qq.com/online/get_weather.php?callback=Weather&city=南京 中国天气-weather.com.cn http://61.4.185.48:81/g/ (根据IP查询城市ID) http://m.weather.com.cn/data/101110101.html(六天预报) http://www.weather.com.cn/data/sk/101110101.html(实时天气信息) google http://ww

iOS学习笔记-精华整理

iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始等待用户的操作,自动释放池就会被释放掉(调用dealloc),池中的对象都会收到一个release,有可能会因此被销毁. 2-成员属性:     readonly:不指定readonly,默认合成getter和setter方法.外界毫不关心的成员,则不要设置任何属性,这样封装能增加代码的独立性和安全

【资源】IOS学习资料 - 逆天整理 - 精华无密版【最新】【精华】

 入门看视频,提高看书籍,飘升做项目.老练研开源,高手读外文,大牛讲低调~  01.IOS基础 01.iOS开发快速入门教程 http://pan.baidu.com/s/1kT3ScOf 链接: http://pan.baidu.com/s/1kTKheAF 密码: yycm 02.苹果开发零基础入门教程 http://pan.baidu.com/s/1dDfHL77 链接: http://pan.baidu.com/s/1o6iNkIu 密码: nn3a 03.黑马IOS2期基础 http:

JAVA调用聚合天气api接口示例

查询天气预报在APP中常用的一个常用功能,聚合数据免费天气api接口可以根据根据城市名/id查询天气.根据IP查询天气.据GPS坐标查询天气.查询城市天气三小时预报,并且支持全国不同城市天气预报查询. 代码描述:基于JAVA的免费天气api接口调用示例,根据文档中注明的需求参数,调用接口返回数据. 关联数据:免费天气api 接口地址:https://www.juhe.cn/docs/api/id/39 step1:选择本文所示例的接口"免费天气api" url:https://www.

searchAPI(iOS 9新api)

searchAPI(iOS 9新api) by 伍雪颖 var searchableItems = [CSSearchableItem]() let attributeSet = CSSearchableItemAttributeSet(itemContentType: "image" as String) attributeSet.title = "wuxueying" attributeSet.contentDescription = "rain&qu

iOS-多线程 ,整理集锦,多种线程的创建

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; //创建线程的第一种方式 NSThread *thread = [[NSThread all

怎么获取iOS的私有API

前言 作为iOS开发人员,相信大多数伙伴都对怎么获取iOS的私有API很有兴趣,最近通过查找资料,总结了以下三种方法,希望对你有用. 第一种(class-dump) 不得不说这是一个很棒的工具,安装和使用都很方便. 安装 去nygard/class-dump下载工程,编译之后就会获得class-dump,把它放到 "/usr/bin" 文件夹里,注意,这个地址根据系统的不同有所差别,我的系统是 10.10.5 ,低版本的系统有些是 "/usr/local/bin"