• AFNetworking


    1.下载AFNetworking资源包  下载
    
    2.将资源包添加到工程文件。
    
    3.在工程的Supporting File群组中打开预编译头文件XXX-Prefix.pch。然后在别的import后面添加如下一行代码#import “AFNetworking”
    
    将AFNetworking添加到预编译头文件,意味着这个框架会被自动的添加到工程的所有源代码文件中。
    
    4.AFNetworking通过网络来加载和处理结构化的数据非常明智,它支持JSON,XML,Property List。
    
    static NSString*const BaseURLString = @"http://www.raywenderlich.com/downloads/weather_sample/";
       
        // 1
        NSString *weatherUrl = [NSStringstringWithFormat:@"%@weather.php?format=json",BaseURLString];
        NSURL *url = [NSURLURLWithString:weatherUrl];
        NSURLRequest *request = [NSURLRequestrequestWithURL:url];
       
        // 2
        AFJSONRequestOperation *operation = [AFJSONRequestOperationJSONRequestOperationWithRequest:request
                                    success:^(NSURLRequest*request, NSHTTPURLResponse *response, id JSON) {
                                                     //
                                                     NSDictionary*dicWeather = (NSDictionary *)JSON;
                                                     NSLog(@"result:%@",dicWeather);
                                                  }
                                    failure:^(NSURLRequest*request, NSHTTPURLResponse *response, NSError *error, id JSON) {
                               UIAlertView*alertView = [[UIAlertView alloc] initWithTitle:@"Error RetrievingWeather"
                                                                       message:[NSStringstringWithFormat:@"%@",error]
                                                                                                  delegate:self
                                                                        cancelButtonTitle:@"OK"
                                                                         otherButtonTitles: nil];
                                                  [alertView show];
                                                  }];
        // 5
        [operation start];
     
    
    (1)根据基本的URL构造除完整的一个URL,然后通过这个完整的URL获得一个NSURL对象,然后根据这个url获得一个NSURLRequest。
    
    (2)AFJSONRequestOperation是一个完整的类,整合了从网络中获取数据并对JSON进行解析。
    
    (3)当请求成功,则运行成功块。在本例中,把解析出来的天气数据从JSON变量转换为一个字典(dictionary),并将其存储在字典中。
    
    (4)如果运行出问题了,则运行失败块(failure block),比如网络不可用。如果failure block被调用了,将会通过提示框显示错误信息。
    
     
    
    6.AFNetWorking异步加载图片
    
    (1)#import “UIImageView+AFNetworking.h”
    (2)UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(40, 80, 40, 40)];
        __weak UIImageView *_imageView = imageView;
        [imageViewsetImageWithURLRequest:[[NSURLRequest alloc] initWithURL:[NSURLURLWithString:@"http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png"]]
                       placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                               success:^(NSURLRequest *request,NSHTTPURLResponse *response, UIImage *image) {
                                  _imageView.image = image;
                                  [_imageView setNeedsDisplay];
                               }
                               failure:^(NSURLRequest *request, NSHTTPURLResponse*response, NSError *error) {
                                  ;
                               }];
        [self.view addSubview:imageView];
     
    
    7.GET 和POST请求
    
    (1).构建一个baseURL,以及一个参数字典,并将这两个变量传给AFHTTPClient.
    
    (2).将AFJSONRequestOperation注册为HTTP的操作, 这样就可以跟之前的示例一样,可以获得解析好的JSON数据。
    
    (3).做了一个GET请求,这个请求有一对block:success和failure。
    
    (4).POST请求跟GET一样
    
     
    
    AFHTTPClient *client= [[AFHTTPClient alloc] initWithBaseURL:baseURL];
    [clientregisterHTTPOperationClass:[AFJSONRequestOperation class]];
    [clientsetDefaultHeader:@"Accept" value:@"application/json"];
    [client postPath:@"weather.php"
                  parameters:parameters
                    success:^(AFHTTPRequestOperation *operation, id responseObject) {
                         self.weather =responseObject;
                         self.title = @"HTTPPOST";
                         [self.tableViewreloadData];
                     }
                    failure:^(AFHTTPRequestOperation *operation, NSError*error) {
                         UIAlertView *av =[[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"
                                                                     message:[NSStringstringWithFormat:@"%@",error]
                                                                    delegate:nil
                                                           cancelButtonTitle:@"OK" otherButtonTitles:nil];
                         [av show];
     
                     }
             ];
     
    [client getPath:@"weather.php"
                 parameters:parameters
                   success:^(AFHTTPRequestOperation *operation, id responseObject) {
                        self.weather =responseObject;
                        self.title = @"HTTP GET";
                        [self.tableViewreloadData];
                    }
                   failure:^(AFHTTPRequestOperation *operation, NSError*error) {
                        UIAlertView *av =[[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"
                                                                     message:[NSStringstringWithFormat:@"%@",error]
                                                                   delegate:nil
                                                          cancelButtonTitle:@"OK" otherButtonTitles:nil];
                        [av show];
     
                    }
             ];
      
    
    8.AFNetworking更新背景图片
    
    Note:
    
    AFJSONOperation,AFPropertyListOperation, AFXMLOperation用来解析结构化数据。
    
    UIImageView+AFNetworking用来快捷的填充image view
    
    AFHTTPClient用来进行更底层的请求
    
    用自定义的AFHTTPClient子类来访问一个web service。
    
    AFNetworkActivityIndicatiorManager用来给用户做出网络访问的提示。
    
    AFImageRequestOperation用来加载图片。
  • 相关阅读:
    9、二叉排序树的创建、插入、遍历
    8、判断两个链表是否相交
    7、判断链表是否有环
    6、查找单链表中倒数第n个节点
    5、单链表的反转
    4、KMP(看毛片)算法
    3、希尔排序
    2、快速排序
    json字符串转为json对象
    json对象转化为字符串过程分析
  • 原文地址:https://www.cnblogs.com/huluo666/p/3523608.html
Copyright © 2020-2023  润新知