///////////////////////////以前用法/////////////////////////////////////////////////////////////

//使用AFHTTPRequestOperation 创建HTTP请求 --- GET请求

//1,url

NSString *URLTmp = @"http://api.budejie.com/api/api_open.php?a=list&appname=baisibudejie&asid=F20FB3C5-A3A6-4ACA-9B22-44FB308FCB23&c=data&client=iphone&device=ios%20%E8%AE%BE%E5%A4%87&from=ios&jbk=1&mac=02%3A00%3A00%3A00%3A00%3A00&market=&openudid=6bcaf1e795d8e4cf82ce78caa1fc33b9a7c671d5&page=0&per=20&type=10&udid=&ver=2.9.3";

URLTmp = [URLTmp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  //转码成UTF-8  否则可能会出现错误

//2,请求对象

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString: URLTmp]];

//3,创建HTTP请求

AFHTTPRequestOperation *afOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

//4,

afOperation.responseSerializer = [AFJSONResponseSerializer serializer];

//5,开始请求

[afOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

//将字符串 编码后 转成 NSData

NSData *resData = [[NSData alloc] initWithData:[operation.responseString dataUsingEncoding:NSUTF8StringEncoding]];

//系统自带JSON解析

NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:resData options:NSJSONReadingMutableLeaves error:nil];

NSLog(@"%@",resultDic);

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"Failure: %@", error);

}];

//6,

[[NSOperationQueue mainQueue] addOperation:afOperation];

//------批量处理

//    NSMutableArray *mutableOperations = [NSMutableArray array];

//    for (NSURL *fileURL in filesToUpload) {

//        NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

//            [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil];

//        }];

//

//        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

//

//        [mutableOperations addObject:operation];

//    }

//

//    NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:@[...] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {

//        NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations);

//    } completionBlock:^(NSArray *operations) {

//        NSLog(@"All operations in batch complete");

//    }];

//    [[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO];

//

///////////////////////////新用法/////////////////////////////////////////////////////////////

//提交GET ,

//1,创建AFHTTPRequestOperationManager HTTP请求操作管理对象

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

//2,发送GET请求(默认解析JSON,plist. )

[manager GET:URLTmp

parameters:nil

success:^(AFHTTPRequestOperation *operation, id responseObject) {

// NSLog(@"JSON: %@", responseObject);

}

failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"Error: %@", error);

}];

// POST 单个请求

//1,创建AFHTTPRequestOperationManager HTTP请求操作管理对象

AFHTTPRequestOperationManager *manager1 = [AFHTTPRequestOperationManager manager];

//2,发送POST请求(默认解析JSON,plist. )

NSDictionary *parameters = @{ };//空参数

[manager1 GET:URLTmp

parameters:parameters  //参数

success:^(AFHTTPRequestOperation *operation, id responseObject) {

// NSLog(@" POST JSON: %@", responseObject);

}

failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"Error: %@", error);

}];

//POST 多个请求

AFHTTPRequestOperationManager *manager2 = [AFHTTPRequestOperationManager manager];

NSDictionary *parameters2 = @{};

NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];

[manager2 POST:@"http://example.com/resources.json"

parameters:parameters2

constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

[formData appendPartWithFileURL:filePath name:@"image" error:nil];

}

success:^(AFHTTPRequestOperation *operation, id responseObject) {

//  NSLog(@"Success: %@", responseObject);

}

failure:^(AFHTTPRequestOperation *operation, NSError *error) {

//NSLog(@"Error: %@", error);

}];

//

////////////////////////////////////////////////////////////////////////////////////////

//创建一个下载文件的任务

//AFURLSessionManager创建并完善了一个NSURLSession的对象基于遵从NSURLSessionDelegate与NSURLSessionDataDelegate协议 NSURLSessionConfigration对象

//1,1 创建配置对象  (上传 下载 使用 ,  配置超时值,缓存策略,连接要求,和其他类型的信息,)

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

//1.2 通过配置对象,创建AFURLSessionManager 管理对象

AFURLSessionManager *managerDown = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

//2,请求对象

NSURL *URL = [NSURL URLWithString:@"http://img4.mypsd.com.cn/20110707/Mypsd_59710_201107071333160001B.jpg"];

NSURLRequest *requestDown = [NSURLRequest requestWithURL:URL];

//3,创建下载任务

NSURLSessionDownloadTask *downloadTask = [managerDown downloadTaskWithRequest:requestDown

progress:nil

destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {

// 3,1 返回 一个下载到的路径

NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];

return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]; //文件路径

}

completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {

//此处已经回到主线程 (处理UI)

// NSLog(@"File downloaded to: %@", filePath);

}];

//4, 开始

[downloadTask resume];

////////////////////////////////////////////////////////////////////////////////////////

//创建一个上传文件的任务

//AFURLSessionManager创建并完善了一个NSURLSession的对象基于遵从NSURLSessionDelegate与NSURLSessionDataDelegate协议 NSURLSessionConfigration对象

//1,1 创建配置对象  (上传 下载 使用 ,  配置超时值,缓存策略,连接要求,和其他类型的信息,)

NSURLSessionConfiguration *configuration1 = [NSURLSessionConfiguration defaultSessionConfiguration];

//1.2 通过配置对象,创建AFURLSessionManager 管理对象

AFURLSessionManager *managerUp = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration1];

//2,请求对象

NSURL *upURL = [NSURL URLWithString:@"http://example.com/upload"];

NSURLRequest *requestUp = [NSURLRequest requestWithURL:upURL];

//3,创建上传任务

NSURLSessionUploadTask *uploadTask = [managerUp uploadTaskWithRequest:requestUp

fromFile:[NSURL fileURLWithPath:@"file://path/to/image.png"]//上传文件的URL

progress:nil

completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {

if (error) {

//  NSLog(@"Error: %@", error);

} else {

// NSLog(@"Success: %@ %@", response, responseObject);

}

}];

//4,开始

[uploadTask resume];

AFNetworking 使用 核心代码的更多相关文章

  1. Android发送短信核心代码

    核心代码:(1)SmsManager manager = SmsManager.getDefault(); //获得默认的消息管理器(2)ArrayList<String> list = ...

  2. [html5+java]文件异步读取及上传核心代码

    html5+java 文件异步读取及上传关键代码段 功能: 1.多文件文件拖拽上传,file input 多文件选择 2.html5 File Api 异步FormData,blob上传,图片显示 3 ...

  3. 【五子棋AI循序渐进】关于VCT,VCF的思考和核心代码

    前面几篇发布了一些有关五子棋的基本算法,其中有一些BUG也有很多值得再次思考的问题,在框架和效果上基本达到了一个简单的AI的水平,当然,我也是初学并没有掌握太多的高级技术.对于这个程序现在还在优化当中 ...

  4. .NET核心代码保护策略-隐藏核心程序集

    经过之前那个道德指责风波过后也有一段时间没写博客了,当然不是我心怀内疚才这么久不写,纯粹是程序员的通病..怎一个懒字了得,本来想写一些长篇大论反讽一下那些道德高人的.想想还是算了,那样估计会引来新一波 ...

  5. 处理部分WordPress核心代码或功能,让你的网站更快

    处理部分WordPress核心代码或功能,让你的网站更快 http://www.wpdaxue.com/speed-up-wordpress.html

  6. OC 冒泡排序 -- 核心代码

    //冒泡 核心代码 for (int i = 0; i < array.count - 1; i++) { int a = [array[i] intValue]; for (int j = i ...

  7. .NET核心代码保护策略

    .NET核心代码保护策略-隐藏核心程序集 经过之前那个道德指责风波过后也有一段时间没写博客了,当然不是我心怀内疚才这么久不写,纯粹是程序员的通病..怎一个懒字了得,本来想写一些长篇大论反讽一下那些道德 ...

  8. js小功能合集:计算指定时间距今多久、评论树核心代码、字符串替换和去除。

    1.计算指定时间距今多久 var date1=new Date('2017/02/08 17:00'); //开始时间 var date2=new Date(); //当前时间 var date3=d ...

  9. 学习Redux之分析Redux核心代码分析

    1. React,Flux简单介绍 学习React我们知道,React自带View和Controller库,因此,实现过程中不需要其他任何库,也可以独立开发应用.但是,随着应用程序规模的增大,其需要控 ...

随机推荐

  1. Ubuntu12.04下载Android4.0.1源码全过程,附若干问题解决[转]

    学校里一直在做应用层开发,考虑到日后就业问题,这次决定研究源码和驱动,并进行编译.没想到就下载源码这一步折腾了我整整两天,期间遇到很多问题,哎,记录于此,希望日后再下源码的人不要再走无谓的弯路了.事实 ...

  2. Android获取文件夹路径 /data/data/

    首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下.所有内部存储中保存的文件在用户卸载应用的时候会被删除. 一. files1 ...

  3. android and javascript

    layout-------->HTML activity-------->JavaScript R资源管理者----------->layout, string, styles, c ...

  4. form 和 ngModel

    参考 https://docs.angularjs.org/api/ng/type/ngModel.NgModelController https://docs.angularjs.org/api/n ...

  5. 【转】Win7、Ubuntu双系统正确卸载Ubuntu系统--不错

    原文网址:http://my.oschina.net/u/1377657/blog/281872 如果ubuntu不是以wubi方式安装的,而是U盘或者光盘装的双系统,那么卸载ubuntu时要慎重,不 ...

  6. 图论:2-SAT模板

    #include<cstdio> #include<vector> #include<cstring> using namespace std; const int ...

  7. javascript笔记7之对象数组

    /* var box = new Array(); //声明一个数组,空数组 alert(typeof box); //数组属于object类型 var box = new Array('李炎恢', ...

  8. css中的边框样式

    在盒子模型中,盒子的边框是其重要的样式,通过边框我们可以很方便地看出盒子的长宽以及大小.边框的特性可以通过边框线,边框的宽度及颜色来呈现. 1,边框线 边框线指的是边框线条的样式,包括实线,虚线,点划 ...

  9. HBase二级索引的设计(案例讲解)

    摘要 最近做的一个项目涉及到了多条件的组合查询,数据存储用的是HBase,恰恰HBase对于这种场景的查询特别不给力,一般HBase的查询都是通过RowKey(要把多条件组合查询的字段都拼接在RowK ...

  10. [置顶] STM32移植contiki进阶之三(中):timer 中文版

    鉴于自己英语水平不高,在这里,将上一篇关于contiki 的timer的文章翻译为中文,让自己在学习的时候,更方便点.文中有许多不是很通顺的地方,将就吧. Timers Contiki系统提供了一套时 ...