注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

简单的天气预报例子  

2013-05-02 22:27:42|  分类: ios开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
(1)ASIHttpRequest请求
(2)解析json

代码如下:

#import "ViewController.h"

#import "SBJSON.h"

#import "ASIFormDataRequest.h"


@interface ViewController ()


@end


@implementation ViewController

@synthesize cityidLabel,dateLabel,weekLabel,weatherLabel,tempLabel,cityLabel;


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    //解析网址,通过ip,获取城市天气代码

    NSURL *url = [NSURL URLWithString:@"http://61.4.185.48:81/g/"];

    

    //定义一个NSError对象,用于捕获错误信息

    NSError *error;

    NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

    NSLog(@"-----------%@",jsonString);

    

    //得到城市代码字符串,截取出城市代码

    NSString *Str;

    for (int i = 0 ; i <= [jsonString length] ; i++)

    {

        for (int j = i + 1; j <= [jsonString length] ; j++)

        {

            Str = [jsonString substringWithRange:NSMakeRange(i, j-i)];

            if (![Str isEqualToString:@"id"])

            {

                if (![[jsonString substringWithRange:NSMakeRange(i+3, 1)] isEqualToString:@"c"])

                {

                    _intString = [jsonString substringWithRange:NSMakeRange(i+3, 9)];

                    NSLog(@"*****%@******",_intString);

                }

            }

        }

    }

    

    //中国天气网解析地址

    NSString *path = @"http://m.weather.com.cn/data/cityNumber.html";

    //将城市代码替换到天气解析网址cityNumber部分

    path = [path stringByReplacingOccurrencesOfString:@"cityNumber" withString:_intString];

    

    NSLog(@"path: %@",path);

    

    ASIFormDataRequest *request = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:path]];

    

    request.delegate = self;

    [request startAsynchronous];

}


#pragma mark -

#pragma mark ASIHTTPRequestDelegate


- (void) requestStarted: (ASIHTTPRequest *) request

{

    NSLog(@"请求开始了");

}



- (void) requestFinished: (ASIHTTPRequest *) request

{

    NSLog(@"请求结束了");

    //responseString就是response响应的正文内容,即网页的源代码

    NSString *str = request.responseString;

    NSLog(@"str is ---->%@",str);

    

    SBJSON *json = [[SBJSON alloc] init];

    NSDictionary *dic = [json objectWithString: str];

    NSLog(@"dic = %@",dic);

    

    NSDictionary *weatherinfo = [dic objectForKey:@"weatherinfo"];

    NSLog(@"weatherinfo = %@",weatherinfo);

    

    //当前城市

    NSString *city = [weatherinfo objectForKey:@"city"];

    cityLabel.text = city;

    

    //日期

    NSString *date = [weatherinfo objectForKey:@"date_y"];

    dateLabel.text = date;

    

    //星期

    NSString *week = [weatherinfo objectForKey:@"week"];

    weekLabel.text = week;

    

    //城市天气编码

    NSString *cityid = [weatherinfo objectForKey:@"cityid"];

    cityidLabel.text = cityid;

    

    //当前温度

    NSString *temp = [weatherinfo objectForKey:@"temp1"];

    tempLabel.text = temp;

    

    //当前天气状况

    NSString *weather = [weatherinfo objectForKey:@"weather1"];

    weatherLabel.text = weather;

}


- (void) requestFailed: (ASIHTTPRequest *) request

{

    NSLog(@"请求失败了");

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end

  评论这张
 
阅读(92)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017