您的位置:首页 > 理论基础 > 计算机网络

使用ASIHTTPRequest获得天气信息

2012-10-07 10:48 387 查看
使用ASIHTTPRequest+JSON一个简单的天气获取Demo,直接上代码:

工程结构截图如下:



加入ASIHTTPRequest的方法请查看上一篇文件,ViewController.h代码如下:

1 //
2 //  ViewController.h
3 //  ASIHTTPRequestDemo
4 //
5 //  Created by Fox on 12-3-13.
6 //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
7 //
8
9 #import <UIKit/UIKit.h>
10
11 @interface ViewController : UIViewController
12 {
13     NSDictionary *cityWeather;
14
15     IBOutlet UILabel *city;
16     IBOutlet UILabel *weather;
17 }
18
19 - (IBAction)getWeather:(id)sender;
20 -(void)showWeather;
21 @property(nonatomic, retain) NSDictionary *cityWeather;
22
23 @end


ViewController.m如下:

1 //
2 //  ViewController.m
3 //  ASIHTTPRequestDemo
4 //
5 //  Created by Fox on 12-3-13.
6 //  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
7 //
8
9 #import "ViewController.h"
10 #import "JSON.h"
11 #import "ASIHTTPRequest.h"
12
13 @interface ViewController ()
14
15 @end
16
17 @implementation ViewController
18
19 @synthesize cityWeather;
20
21 - (void)viewDidLoad
22 {
23     [super viewDidLoad];
24     // Do any additional setup after loading the view, typically from a nib.
25 }
26
27 - (void)viewDidUnload
28 {
29     [city release];
30     city = nil;
31     [weather release];
32     weather = nil;
33     [super viewDidUnload];
34     // Release any retained subviews of the main view.
35 }
36
37 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
38 {
39     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
40 }
41
42 - (void)dealloc {
43     [city release];
44     [weather release];
45     [super dealloc];
46 }
47
48 - (IBAction)getWeather:(id)sender {
49
50     //use the opensourse ASIHTTPRequest to work with a network
51 //get a city's weather
52     NSURL *url = [NSURL URLWithString:@"http://m.weather.com.cn/data/101270101.html"];
53     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
54     [request setDelegate:self];
55     [request startAsynchronous];
56
57
58 }
59
60 -(void)showWeather{
61     [city setText:[NSString stringWithFormat:@"%@",[cityWeather objectForKey:@"city"]]];
62
63     //    NSLog(@"cityName is %@",[cityWeather objectForKey:@"city"]);
64
65     [weather setText:[NSString stringWithFormat:@"%@",[cityWeather objectForKey:@"weather2"]]];
66
67 }
68
69 //call this method when request finished
70 - (void)requestFinished:(ASIHTTPRequest *)request
71 {
72     //    NSLog(@"the network is OK...");
73
74     SBJSON *parser = [[SBJSON alloc] init];
75
76     // Use when fetching text data
77     NSString *responseString = [request responseString];
78     //    NSLog(@"the responseString is %@",responseString);
79
80 // Use when fetching binary data
81     NSData *responseData = [request responseData];
82
83     //    NSLog(@"the responseData is %@",responseData);
84
85     NSDictionary *dic = [[NSDictionary alloc] initWithDictionary:[parser objectWithString:responseString error:nil]];
86
87
88     self.cityWeather= [dic objectForKey:@"weatherinfo"];
89
90
91     [self showWeather];
92
93     [parser release];
94 }
95
96
97 - (void)requestFailed:(ASIHTTPRequest *)request
98 {
99     NSError *error = [request error];
100     NSLog(@"the error is %@",error);
101 }
102
103
104 @end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: