zoukankan      html  css  js  c++  java
  • AFNetworking了解

     

    AFNetworking了解

     

    AFNetworking是一个讨人喜欢的网络库,适用于iOS以及Mac OS X. 它构建于在NSURLConnectionNSOperation, 以及其他熟悉的Foundation技术之上. 它拥有良好的架构,丰富的api,以及模块化构建方式,使得使用起来非常轻松.例如,他可以使用很轻松的方式从一个url来得到json数据:

    1
    NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"];
    2
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    3
    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    4
        NSLog(@"Public Timeline: %@", JSON);
    5
    } failure:nil];
    6
    [operation start];

    如何开始使用

    综述

    CORE:

    AFURLConnectionOperation:一个 NSOperation 实现了NSURLConnection 的代理方法.

    HTTP Requests:

    AFHTTPRequestOperation:AFURLConnectionOperation的子类,当request使用的协议为HTTP和HTTPS时,它压缩了用于决定request是否成功的状态码和内容类型.

    AFJSONRequestOperation:AFHTTPRequestOperation的一个子类,用于下载和处理jason response数据.

    AFXMLRequestOperation:AFHTTPRequestOperation的一个子类,用于下载和处理xml response数据.

    AFPropertyListRequestOperation:AFHTTPRequestOperation的一个子类,用于下载和处理property list response数据.

    HTTP CLIENT:

    AFHTTPClient:捕获一个基于http协议的网络应用程序的公共交流模式.包含:

    • 使用基本的url相关路径来只做request
    • 为request自动添加设置http headers.
    • 使用http 基础证书或者OAuth来验证request
    • 为由client制作的requests管理一个NSOperationQueue
    • 从NSDictionary生成一个查询字符串或http bodies.
    • 从request中构建多部件
    • 自动的解析http response数据为相应的表现数据
    • 在网络可达性测试用监控和响应变化.

    IMAGES

    AFImageRequestOperation:一个AFHTTPRequestOperation的子类,用于下载和处理图片.

    UIImageView+AFNetworking:添加一些方法到UIImageView中,为了从一个URL中异步加载远程图片

    例子程序

    XML REQUEST

    1
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://api.flickr.com/services/rest/?method=flickr.groups.browse&api_key=b6300e17ad3c506e706cb0072175d047&cat_id=34427469792%40N01&format=rest"]];
    2
    AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {
    3
      XMLParser.delegate = self;
    4
      [XMLParser parse];
    5
    } failure:nil];
    6
    [operation start];

    IMAGE REQUEST

    1
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
    2
    [imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]];

    API CLIENT REQUEST

    1
    // AFGowallaAPIClient is a subclass of AFHTTPClient, which defines the base URL and default HTTP headers for NSURLRequests it creates
    2
    [[AFGowallaAPIClient sharedClient] getPath:@"/spots/9223" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    3
        NSLog(@"Name: %@", [responseObject valueForKeyPath:@"name"]);
    4
        NSLog(@"Address: %@", [responseObject valueForKeyPath:@"address.street_address"]);
    5
    } failure:nil];

    FILE UPLOAD WITH PROGRESS CALLBACK

    01
    NSURL *url = [NSURL URLWithString:@"http://api-base-url.com"];
    02
    AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
    03
    NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"avatar.jpg"], 0.5);
    04
    NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    05
        [formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
    06
    }];
    07
     
    08
    AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
    09
    [operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    10
        NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
    11
    }];
    12
    [operation start];

    STREAMING REQUEST

    1
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8080/encode"]];
    2
     
    3
    AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
    4
    operation.inputStream = [NSInputStream inputStreamWithFileAtPath:[[NSBundle mainBundle] pathForResource:@"large-image" ofType:@"tiff"]];
    5
    operation.outputStream = [NSOutputStream outputStreamToMemory];
    6
    [operation start];
     
  • 相关阅读:
    SAP OPEN UI5 Step 8: Translatable Texts
    SAP OPEN UI5 Step7 JSON Model
    SAP OPEN UI5 Step6 Modules
    SAP OPEN UI5 Step5 Controllers
    SAP OPEN UI5 Step4 Xml View
    SAP OPEN UI5 Step3 Controls
    SAP OPEN UI5 Step2 Bootstrap
    SAP OPEN UI5 Step1 环境安装和hello world
    2021php最新composer的使用攻略
    Php使用gzdeflate和ZLIB_ENCODING_DEFLATE结果gzinflate报data error
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/4308947.html
Copyright © 2011-2022 走看看