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];
     
  • 相关阅读:
    Django and Djangorestframework
    安装socketio出现module 'importlib._bootstrap' has no attribute 'SourceFileLoader' 错误
    pycharm 里运行 django 工程 You must either define the environment variable DJANGO_SETTINGS_MODULE 错误
    linux 安装python3
    iOS 10.3下解决Fiddler代理抓包ssl证书信任问题
    Android 7.0 fiddler代理抓不到https请求的解决办法
    python base64 decode incorrect padding错误解决方法
    Fiddler做代理服务器时添加X-Forwarder-For转发真实客户端ip
    python安装pbkdf2 遇到错误TypeError: __call__() takes exactly 2 arguments (1 given)
    soapUI通过groovy脚本设置超时时间
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/4308947.html
Copyright © 2011-2022 走看看