iOS notes about url

mac developer library


关于 iOS 获取网络数据

后台线程--》Retrieving Data Synchronously (同步)--》不推荐,必须保证不能在主线程中,if you attempt to perform those network operations synchronously on the main thread, the operations would block your app’s execution until the data has been completely received, an error occurs, or the request times out. This causes a poor user experience, and can cause iOS to terminate your app.

返回数据

        if the request succeeds, the contents of the request are returned as an NSData object and an NSURLResponse object for the request is returned by reference. IfNSURLConnection is unable to retrieve the URL, the method returns nil and any available NSError instance by reference in the appropriate parameter.

如果在请求中需要认证 

If the request requires authentication to make the connection, valid credentials must already be available in the NSURLCredentialStorage object or must be provided as part of the requested URL. If the credentials are not available or fail to authenticate, the URL loading system responds by sending the NSURLProtocolsubclass handling the connection a continueWithoutCredentialForAuthenticationChallenge: message


异步  sendAsynchronousRequest:queue:completionHandler:  点击打开链接

//
//  AJViewController.m
//  GetWeather
//
//  Created by cxj on 14-7-31.
//  Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved.
//

#import "AJViewController.h"

@interface AJViewController ()

@end

@implementation AJViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)GetData:(id)sender {
    
    NSError *error;
    //加载一个NSURL对象
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/atad/101280501.html"]];
    [NSURLConnection sendAsynchronousRequest:request
     
                                       queue:[NSOperationQueue mainQueue]
     
                           completionHandler:^(NSURLResponse *response,NSData *data,NSError *error) {
                               
                               if ([data length] > 0 && error == nil)
                                   
                               {
                                   
                                   NSString *html = [[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];
                                   
                                   //操作
                                   NSLog(@"%@",html);
                                   NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
                                   NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];
                                   NSString*result=[NSString stringWithFormat:@"今天是%@,%@  \n%@的天气状况是%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
                                   
                                   self.DataField.text =result;
                                   NSLog(@"weatherInfo字典里面的内容为--》%@", weatherDic );
                                   NSLog(@"%@",result);

                                   
                               }
                               
                               else if ([data length] == 0 && error ==nil)
                                   
                               {
                                   
                                   //没有数据
                                   
                               }
                               
                               else if (error != nil)
                                   
                               {
                                   
                                   //超时
                                   
                               }
                               
                               else
                                   
                               {
                                   
                                   
                                   
                               }  
                               
                           }];
    }

@end



//将请求的url数据放到NSData对象中

    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];

    //解析类NSJSONSerializationresponse中解析出数据放到字典中

    NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];

    NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];

    NSString*result=[NSString stringWithFormat:@"今天是%@,%@  \n%@的天气状况是%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];

    

    self.DataField.text =result;

    NSLog(@"weatherInfo字典里面的内容为--%@", weatherDic );

    NSLog(result);

//
//  AJViewController.m
//  GetWeather
//
//  Created by cxj on 14-7-31.
//  Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved.
//

#import "AJViewController.h"

@interface AJViewController ()

@end

@implementation AJViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)GetData:(id)sender {
    
    NSError *error;
    //加载一个NSURL对象
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/atad/101280501.html"]];
    //将请求的url数据放到NSData对象中
    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
    //解析类NSJSONSerialization从response中解析出数据放到字典中
    NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];
    NSDictionary *weatherInfo = [weatherDic objectForKey:@"weatherinfo"];
    NSString*result=[NSString stringWithFormat:@"今天是%@,%@  \n%@的天气状况是%@ %@ ",[weatherInfo objectForKey:@"date_y"],[weatherInfo objectForKey:@"week"],[weatherInfo objectForKey:@"city"], [weatherInfo objectForKey:@"weather1"], [weatherInfo objectForKey:@"temp1"]];
    
    self.DataField.text =result;
    NSLog(@"weatherInfo字典里面的内容为--》%@", weatherDic );
    NSLog(@"%@",result);
}

@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值