iOS notes about url

来源:互联网 发布:东北大学软件学院教师 编辑:程序博客网 时间:2024/05/16 16:08

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 = [NSURLConnectionsendSynchronousRequest:request returningResponse:nilerror:&error];

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

    NSDictionary *weatherDic = [NSJSONSerializationJSONObjectWithData:response options:NSJSONReadingMutableLeaveserror:&error];

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

   NSString*result=[NSStringstringWithFormat:@"今天是%@,%@  \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