异步请求HTTP
代碼:
@interface HttpProcessor : NSObject <NSURLConnectionDataDelegate> {NSMutableData *buffer; }@property BOOL finished; @property (strong, nonatomic) NSString *html; @end@implementation HttpProcessor @synthesize finished; @synthesize html;-(id)init {if (self) {finished = NO;}return self; }// 開(kāi)始接收響應(yīng) -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {finished = NO;buffer = [[NSMutableData alloc] init]; }// 接收ing , 可能多次調(diào)用 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {[buffer appendData:data]; }// 結(jié)束響應(yīng) -(void)connectionDidFinishLoading:(NSURLConnection *)connection {finished = YES;html = [[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding];//NSLog(@"%@", html);NSLog(@"OK"); } @endvoid request(NSString *urlString) {NSLog(@"BEGIN");// make request objectNSURL *url = [[NSURL alloc]initWithString:urlString];NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];[request setHTTPMethod:@"GET"];[request setTimeoutInterval:10];// send requestHttpProcessor *processor = [[HttpProcessor alloc]init];[NSURLConnection connectionWithRequest:request delegate:processor]; }?代碼塊:
void request(NSString *urlString) {NSLog(@"BEGIN");// make request objectNSURL *url = [[NSURL alloc]initWithString:urlString];NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url];[request setHTTPMethod:@"GET"];[request setTimeoutInterval:10];// send request [NSURLConnectionsendAsynchronousRequest:requestqueue:[NSOperationQueue mainQueue]completionHandler:^(NSURLResponse *response, NSData *result, NSError *error){//只會(huì)進(jìn)入一次,方法內(nèi)部已經(jīng)實(shí)現(xiàn)了Buffer作用NSString *html = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];NSLog(@"html = %@", html);}]; }參考:
http://www.tuicool.com/articles/2Yru6f
?
轉(zhuǎn)載于:https://www.cnblogs.com/code-style/p/4011788.html
總結(jié)
- 上一篇: 刺激战场有7.1声道吗(如何刺激女人让她
- 下一篇: angular.js前端和后台的数据交换