ASIHTTPRequest用法不多介紹,網上一堆,執行個體
1 #import <UIKit/UIKit.h>
2 #import "MainView.h"
3
4 @interface AppDelegate : UIResponder <UIApplicationDelegate>
5
6 @property (strong, nonatomic) UIWindow *window;
7 @property (strong, retain) MainView *viewController;
8
9 @end
1 - (void)dealloc
2 {
3 [_window release];
4 [_viewController release];
5 [super dealloc];
6 }
7
8 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
9 {
10 CGRect screenBounds=[[UIScreen mainScreen]applicationFrame];
11 CGRect windowBounds=screenBounds;
12 windowBounds.origin.y=0;
13 self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease];
14 // Override point for customization after application launch.
15 self.viewController=[[MainView alloc]initWithFrame:windowBounds];
16 self.window.backgroundColor = [UIColor whiteColor];
17 [self.window addSubview: self.viewController];
18 [self.window makeKeyAndVisible];
19 return YES;
20 }
1 #import <UIKit/UIKit.h>
2 #import "ASIHTTPRequest.h"
3
4 @interface MainView : UIView
5 {
6 UIButton *btn1;
7 NSOperationQueue *queue;
8 ASIHTTPRequest *request;
9 UIProgressView *progressView;
10 }
11
12 - (IBAction)grabURL:(id)sender;
13
14 @end
1 #import "MainVIew.h"
2
3 @implementation MainView
4
5 - (id)initWithFrame:(CGRect)frame
6 {
7 self = [super initWithFrame:frame];
8 if (self) {
9 //隊列
10 queue = [[NSOperationQueue alloc] init];
11
12 btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
13 [btn1 setFrame:CGRectMake(50, 50, 100, 50)];
14 [btn1 setTitle:@"下載" forState:UIControlStateNormal];
15
16 btn1.titleLabel.font = [UIFont boldSystemFontOfSize:14];
17 btn1.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 16);
18 [btn1 addTarget:self
19 action:@selector(grabURLInTheBackground:)
20 forControlEvents:UIControlEventTouchUpInside];
21 //進度條
22 progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(0.0f, 40.0f, 220.0f, 90.0f)];
23 [progressView setProgressViewStyle: UIProgressViewStyleDefault];
24
25 [self addSubview:btn1];
26 [self addSubview:progressView];
27 }
28 return self;
29 }
30
31 -(void) dealloc
32 {
33 [request clearDelegatesAndCancel];
34 [request release];
35 request = nil;
36 [progressView release];
37 [queue release];
38 [btn1 release];
39 [super dealloc];
40 }
41
42 //多線程非同步
43 - (IBAction)grabURLInTheBackground:(id)sender
44 {
45
46 NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
47 request = [ASIHTTPRequest requestWithURL:url];
48 [request setDelegate:self];
49 [request setDidFinishSelector:@selector(requestDone:)];
50 [request setDidFailSelector:@selector(requestWentWrong:)];
51 [request setDownloadProgressDelegate:progressView];
52 [queue addOperation:request];
53
54 }
55
56 - (void)requestDone:(ASIHTTPRequest *)request
57 {
58 NSString *responseString = [request responseString];
59 NSLog(@"responseString=%@",responseString);
60 }
61
62 - (void)requestWentWrong:(ASIHTTPRequest *)request
63 {
64 NSError *error = [request error];
65 }
66
67 //非同步
68 - (IBAction)grabURLInBackground:(id)sender
69 {
70
71 NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
72
73 request= [ASIHTTPRequest requestWithURL:url];
74
75 [request setDelegate:self];
76
77 [request startAsynchronous];
78
79 }
80
81 - (void)requestFinished:(ASIHTTPRequest *)request
82 {
83 // 當以文本形式讀取返回內容時用這個方法
84 NSString *responseString = [request responseString];
85
86 // 當以二進位形式讀取返回內容時用這個方法
87 NSData *responseData = [request responseData];
88
89 NSLog(@"responseString=%@",responseString);
90
91 [responseString autorelease];
92 [responseData autorelease];
93
94
95 }
96
97 - (void)requestFailed:(ASIHTTPRequest *)request
98 {
99
100 NSError *error = [request error];
101 [error autorelease];
102
103 }
104
105 //同步
106 - (IBAction)grabURL:(id)sender
107 {
108 NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
109
110 request = [ASIHTTPRequest requestWithURL:url];
111
112 [request startSynchronous];
113
114 NSError *error = [request error];
115
116 if (!error) {
117
118 NSString *response = [request responseString];
119 NSLog(@"response=%@",response);
120
121 }
122
123 }
124
125 @end