iOS开发-请求网页的两种方式

请求网页的两种方式

//BNPAddExplainVC.h

#import 

@interface BNPAddExplainVC : UIViewController

@end
//BNPAddExplainVC.m

#import "BNPAddExplainVC.h"
#import "SVProgressHUD.h"

@interface BNPAddExplainVC ()<UIWebViewDelegate>

@property (nonatomic,strong)UIWebView *webView;
@end

@implementation BNPAddExplainVC

-(void)loadView{

    self.webView = [[UIWebView alloc] init];
    self.view = self.webView;

}

- (void)viewDidLoad {
    [super viewDidLoad];

    self.webView.delegate = self;

    self.title = @"加号服务说明";

    NSURL *url = [NSURL URLWithString:@"http://m.baidu.com/"];

    NSMutableURLRequest *reuqest = [NSMutableURLRequest requestWithURL:url];

    [reuqest setValue:@"iPhone AppleWebKit" forHTTPHeaderField:@"User-Agent"];

//方式一:
//如果发送请求失败,data返回nil,程序会继续往下执行,UIWebViewDelegate三个代理方法正常执行.
//[NSURLConnection sendAsynchronousRequest:reuqest queue:[NSOperationQueue  mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
       //NSString *html = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        //NSLog(@"%@",data);
        //[self.webView loadHTMLString:html baseURL:url];       
    //}];


//方式二:
//如果发送请求失败,会一直卡在这里,只调用了webViewDidStartLoad:代理方法;
    [self.webView loadRequest:reuqest];

}

#pragma mark -UIWebView代理方法

- (void)webViewDidStartLoad:(UIWebView *)webView{

    [SVProgressHUD show];

}

- (void)webViewDidFinishLoad:(UIWebView *)webView{

    [SVProgressHUD dismiss];
}
- (void)viewWillDisappear:(BOOL)animated{

    [SVProgressHUD dismiss];
    [super viewWillDisappear:YES];
}

@end

两种方式的区别

  • 方式一是用子线程来对网络发起请求,如果发送不成功,data会返回nil,程序会继续往下执行,UIWebViewDelegate三个代理方法正常执行.
  • 方式二是同步方法,如果发送请求失败,会一直卡在这里,只调用了webViewDidStartLoad:代理方法;

你可能感兴趣的:(Object-C实战经验,ios开发,请求网络,请求网页)