较老版本 AFNetworking 使用心得

简介:

较老版本的 AFNetworking 下载链接 http://pan.baidu.com/s/14Cxga

将压缩包中的文件夹拖入xcode工程项目中并引入如下的框架

 

简单的 JOSN 解析例子
    static NSString *serverAddress = @"http://m.weather.com.cn/data/101110101.html";

  // 1.创建JSON操作对象
    AFJSONRequestOperation *operation =
    [AFJSONRequestOperation
     JSONRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:serverAddress]]
     success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
         NSLog(@"success -- %@", JSON);
     } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
         NSLog(@"failure -- %@", JSON);
     }];

 

    // 2.执行对象的操作异步加载
    [operation start];

 

简单的 XML 解析例子

    static NSString *serverAddress = @"http://flash.weather.com.cn/wmaps/xml/beijing.xml";
    
    // 1.创建XML操作对象
    AFXMLRequestOperation *operation =
    [AFXMLRequestOperation
     XMLParserRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:serverAddress]]
     success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {
         NSLog(@"success -- %@", XMLParser);
     }
     failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) {
         NSLog(@"failure -- %@", XMLParser);
     }];


    // 2.执行对象的操作异步加载
    [operation start];

HTTP POST请求例子

-----------------------------------------------------------------------------------------------------

//内联函数

NS_INLINE AFHTTPClient * createAFHTTPClient(NSString *baseURLString)
{
    //创建一个AFHTTPClient的链接,仅需传入服务器URL的String即可
    return [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:baseURLString]];
}

NS_INLINE NSData * createJSONDataFromDict(NSDictionary *params)
{
    //根据字典创建出JSON专用格式的NSData
    return [NSJSONSerialization dataWithJSONObject:params
                                           options:NSJSONWritingPrettyPrinted
                                             error:nil];
}

-----------------------------------------------------------------------------------------------------

//服务器地址
    static NSString *serverAddress = @"http://art.wooboo.com.cn/support/service.shtml";
    
    //初始化一个本地的httpClient
    AFHTTPClient *httpClient = createAFHTTPClient(serverAddress);
    
    //完善httpClient并形成一个POST请求报文
    NSURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST"
                                                                  path:serverAddress
                                                            parameters:nil
    constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        
        
        NSArray *paramsType = @[@{@"action": @"loadImg", @"artId": @"0"}];
        
        
        //转换字典数据为JSON专用格式并再次转换为字符串
        NSString *params = [[NSString alloc] initWithData:
                            createJSONDataFromDict(paramsType[0])
                                                 encoding:NSUTF8StringEncoding];
        
        
        //进一步完善请求的内容 (Content-Disposition: form-data; name=#{name}")
        [formData appendPartWithFormData:[params dataUsingEncoding:NSUTF8StringEncoding]
                                    name:@"p"];
    }];
    
    
    //将请求报文发送到服务器进行链接
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    [operation
     setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
         
         
         NSLog(@"%@", jsonObjectFromData(responseObject));
         
         
     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         
         NSLog(@"error.");
         
     }];
    [operation start];

加载网络图片

-----------------------------------------------------------------------------------------------------

//内联函数

NS_INLINE NSURL * netURL(NSString *netPath)
{
    //网络文件的URL
    return [NSURL URLWithString:netPath];
}


NS_INLINE UIImage * imageFromBuddleByName(NSString *imageName)
{
    //通过名字获取buddle中图片资源
    return [UIImage imageNamed:imageName];
}

-----------------------------------------------------------------------------------------------------

- (void)setImageWithURL:(NSURL *)url
    placeholderImage:(UIImage *)placeholderImage;

Creates and enqueues an image request operation, which asynchronously downloads the image from the specified URL. Any previous image request for the receiver will be cancelled. If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished.

-----------------------------------------------------------------------------------------------------

    static NSString *picServerAddress =
    @"http://wallpapers.wallbase.cc/high-resolution/wallpaper-2677423.jpg";

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];


    [imageView setImageWithURL:netURL(picServerAddress)
                      placeholderImage:imageFromBuddleByName(@"1.png")];

-----------------------------------------------------------------------------------------------------

目录
相关文章
|
11月前
|
JavaScript 前端开发 程序员
从零开发和发布自己的wordpress插件到官方插件库完全指南
wordpress是一款很流行的开源博客程序,全世界有很多网站都在使用wordpress,程序员们也喜欢拿来做自己的技术博客,对于自己不满意的地方,那肯定也需要自己动手来修改了,下面就介绍从开发到发布一个wordpress插件的完整流程
117 0
|
Web App开发 开发工具 git
WebRTC 源码旧版本下载
WebRTC 源码旧版本下载
546 0
|
Web App开发 存储 网络协议
ios 组件化之Cocoapods私有库详解以及问题解决方案
ios 组件化之Cocoapods私有库详解以及问题解决方案
ios 组件化之Cocoapods私有库详解以及问题解决方案
|
Java 编译器 Go
官方golang包管理神器,值得一试!
官方golang包管理神器,值得一试!
官方golang包管理神器,值得一试!
|
存储 Linux 文件存储
After Effects2023最新版本在哪里可以下载?好不好用
AE也就是After Effects,软件的全称是Adobe After Effects 2023。是由Adobe Systems开发和发行的影视特效处理软件。
152 0
|
监控 安全 搜索推荐
全新版本CleanMyMac2023下载及有哪些新功能?
从最初开始下载CleanMyMac开始,CMM一直在提供智能的清理,从颇受小白用户喜爱的自动清理特性开始,仅需一键即可快速而安全地清理系统各角落垃圾,释放宝贵硬盘空间,CMM或许可以说是是 Mac上最知名的系统清理工具了。CleanMyMac2023下载:http://t.csdn.cn/vMNV9
105 0
|
自然语言处理 监控 安全
CleanMyMac2023官方最新版有哪些功能介绍?
电脑系统垃圾太多,影响使用效率,有哪些好用的mac系统垃圾清理工具值得入手呢?小编整理的几款简单好用的分享给大家,需要的拿走,小白必备,mac系统垃圾清理工具分享。
124 0
|
存储 安全 开发工具
手把手教你使用Tinker Platform进行热修复补丁管理
手把手教你使用Tinker Platform进行热修复补丁管理
514 0
手把手教你使用Tinker Platform进行热修复补丁管理
|
编解码 IDE 开发工具
聊聊最新版AirtestIDE的新功能
聊聊最新版AirtestIDE的新功能
152 0
|
Java 开发工具 图形学
Unity使用心得 之 ✨ Unity2019打包apk显示版本过低问题
Unity2019打包apk显示版本过低问题 可能不止2019有问题,正常用unity打包windows是没问题的,选择打包安卓就会出现下图所示类似问题 明明安装了JDK\SDK,而且我用unty2017、unity2018都用这个SDK打包安卓没出问题,19就出问题,就很头痛。 按照图片上这两个说明看,是指sdk版本不对,或者路径不对没检测到SDK(但是我17、18就能检测到,明显不是SDK路径等问题) 在网上搜了挺多这类问题,解决办法挺多,各不相同,但是也没有一个好好的解决方案,下面说说我的解决办法提供大家试试吧,要不然写完了打包不出来就很难受。
Unity使用心得 之 ✨ Unity2019打包apk显示版本过低问题