一、AFNetWorking基本使用

 //
// ViewController.m
// IOS_0112_AFNetWorking
//
// Created by ma c on 16/2/11.
// Copyright © 2016年 博文科技. All rights reserved.
// #import "ViewController.h"
#import "AFNetworking.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor cyanColor]; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self getData];
} - (void)postJSON
{
// 1.创建一个请求操作管理者
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2.声明:等会服务器返回的是JSON数据,默认是JSON数据
mgr.responseSerializer = [AFJSONResponseSerializer serializer]; // 2.请求参数
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"username"] = @"";
dict[@"pwd"] = @"";
// 3.发送一个GET请求
NSString *url = @"http://localhost:8080/MJServer/login";
[mgr POST:url parameters:dict progress:^(NSProgress * _Nonnull downloadProgress) {
;
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//判断responseObject的类型
//NSLog(@"请求成功-----%@",[responseObject class]);
NSLog(@"请求成功-----%@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败");
}]; } - (void)getData
{
// 1.创建一个请求操作管理者
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2.声明:不要对服务器返回的数据进行解析,直接返回data即可
mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; // 2.请求参数
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"username"] = @"";
dict[@"pwd"] = @"";
//dict[@"type"] = @"XML";
// 3.发送一个GET请求
NSString *url = @"http://localhost:8080/MJServer/login";
[mgr GET:url parameters:dict progress:^(NSProgress * _Nonnull downloadProgress) {
;
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"请求成功-----%@", [responseObject class]); NSDictionary *dcit = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
NSLog(@"%@",dict); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败");
}]; }
- (void)getXML
{
// 1.创建一个请求操作管理者
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2.声明:等会服务器返回的是XML数据
mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];
// 2.请求参数
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"username"] = @"";
dict[@"pwd"] = @"";
dict[@"type"] = @"XML";
// 3.发送一个GET请求
NSString *url = @"http://localhost:8080/MJServer/login";
[mgr GET:url parameters:dict progress:^(NSProgress * _Nonnull downloadProgress) {
;
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"请求成功-----%@", responseObject);
//解析XML数据 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败");
}]; }
- (void)getJSON
{
// 1.创建一个请求操作管理者
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2.声明:等会服务器返回的是JSON数据,默认是JSON数据
mgr.responseSerializer = [AFJSONResponseSerializer serializer]; // 2.请求参数
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"username"] = @"";
dict[@"pwd"] = @"";
// 3.发送一个GET请求
NSString *url = @"http://localhost:8080/MJServer/login";
[mgr GET:url parameters:dict progress:^(NSProgress * _Nonnull downloadProgress) {
;
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
//判断responseObject的类型
//NSLog(@"请求成功-----%@",[responseObject class]);
NSLog(@"请求成功-----%@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"请求失败");
}]; }
@end

二、AFNetWorking文件上传

 //
// ViewController.m
// IOS_0112_AFNetWorking
//
// Created by ma c on 16/2/11.
// Copyright © 2016年 博文科技. All rights reserved.
// #import "ViewController.h"
#import "AFNetworking.h" @interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate,UIActionSheetDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *imageView; - (IBAction)upload; @end @implementation ViewController /*
文件下载,文件比较大时,断点续传技术:普遍所有的HTTP服务器都支持
文件上传,文件比较大时,断点续传技术:一般的HTTP服务器都不支持,常用的技术是Socket(TCP\IP,UDP)
*/ - (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor cyanColor]; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self uploadPhotos];
} - (void)uploadPhotos
{
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"请选择图片" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"相册", nil];
[sheet showInView:self.view.window]; // if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) return;
// //上传手机照片给服务器,图片来源
// // 拍照:UIImagePickerControllerSourceTypeCamera
// // 相册:UIImagePickerControllerSourceTypePhotoLibrary
//
// UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
// //设置图片来源
// //ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
// ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// //设置代理
// ipc.delegate = self;
// [self presentViewController:ipc animated:nil completion:nil];
} #pragma mark - UIActionSheetDelegate的代理方法
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
//设置代理
ipc.delegate = self; switch (buttonIndex) {
case : //拍照
{
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) return;
ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
break;
}
case : //相片
{
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) return;
ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break;
} default:
break;
}
//显示控制器
[self presentViewController:ipc animated:nil completion:nil];
} #pragma mark - UIImagePickerControllerDelegate代理方法
//选择完图片后调用
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
//销毁控制器
[picker dismissViewControllerAnimated:nil completion:nil];
//获得图片
UIImage *image = info[UIImagePickerControllerOriginalImage];
//显示图片
self.imageView.image = image;
NSLog(@"%@",image); } - (IBAction)upload {
if (self.imageView.image == nil) return; // 1.创建一个请求操作的管理者
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2.封装参数(此参数只能放非文件参数)
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"username"] = @"bowen";
dict[@"pwd"] = @""; // 2.发送一个请求
NSString *url = @"http://localhost:8080/MJServer/upload"; [mgr POST:url parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { /*
FileData:需要上传文件的具体数据
name:服务器那边接收文件用的参数名
fileName:告诉服务器所上传文件的文件名
mimeType:所上传文件的文件类型
*/ NSData *fileData = UIImageJPEGRepresentation(self.imageView.image, 1.0);
[formData appendPartWithFileData:fileData name:@"file" fileName:@"pic.jpg" mimeType:@"image/jpeg"]; } progress:^(NSProgress * _Nonnull uploadProgress) {
;
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"上传成功");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"上传失败");
}]; } #pragma mark - uploadFile
- (void)uploadFile
{
// 1.创建一个请求操作的管理者
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 2.封装参数(此参数只能放非文件参数)
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"username"] = @"bowen";
dict[@"pwd"] = @""; // 2.发送一个请求
NSString *url = @"http://localhost:8080/MJServer/upload"; [mgr POST:url parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
//在发送请求之前会自动调用这个block
//需要在这个block中添加文件参数到formData /*
FileURL:需要上传的文件的URL路径
name:告诉服务器那边接收文件用的参数名
fileName:告诉服务器所上传文件的文件名
mimeType:所上传文件的文件类型
*/
NSURL *url = [[NSBundle mainBundle] URLForResource:@"abc" withExtension:@"jpg"];
[formData appendPartWithFileURL:url name:@"file" fileName:@"text.jpg" mimeType:@"image/jpeg"error:nil]; /*
FileData:需要上传文件的具体数据
name:服务器那边接收文件用的参数名
fileName:告诉服务器所上传文件的文件名
mimeType:所上传文件的文件类型 UIImage *image = [UIImage imageNamed:@"abc"];
NSData *fileData = UIImageJPEGRepresentation(image, 1);
[formData appendPartWithFileData:fileData name:@"file" fileName:@"pic.jpg" mimeType:@"image/jpeg"]; */ } progress:^(NSProgress * _Nonnull uploadProgress) {
;
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"上传成功");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"上传失败");
}];
} @end

IOS-网络(AFNetworking)的更多相关文章

  1. IOS网络请求框架AFNetworking和ASIHttpRequest对比

    ASI基于CFNetwork框架开发,而AFN基于NSURL. ASI更底层,请求使用创建CFHTTPMessageRef进行,使用NSOperationQueue进行管理,ASIHTTPReques ...

  2. 对比iOS网络组件:AFNetworking VS ASIHTTPRequest

    对比iOS网络组件:AFNetworking VS ASIHTTPRequest 作者 高嘉峻 发布于 2013年2月28日 | 7 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...

  3. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  4. iOS网络基础知识

    iOS网络基础知识 1.一次HTTP请求的完整过程 (1)浏览器或应用发起Http请求,请求包含Http请求Http(请求),地址(url),协议(Http1.1)请求为头部 (2)web服务器接收到 ...

  5. iOS网络相关零散知识总结

    iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径   ...

  6. IOS网络编程——第三方类库

    IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他

  7. 【转载】一步一步搭建自己的iOS网络请求库

    一步一步搭建自己的iOS网络请求库(一) 大家好,我是LastDay,很久没有写博客了,这周会分享一个的HTTP请求库的编写经验. 简单的介绍 介绍一下,NSURLSession是iOS7中新的网络接 ...

  8. ios 网络数据下载和JSON解析

    ios 网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载 ...

  9. ios网络 -- HTTP请求 and 文件下载/断点下载

    一:请求 http://www.jianshu.com/p/8a90aa6bad6b 二:下载 iOS网络--『文件下载.断点下载』的实现(一):NSURLConnection http://www. ...

  10. iOS 网络监测

    iOS网络监测,监测单个页面写在ViewController里,监测全部写在AppDelegate中,而且不用终止 - (void)viewDidLoad { [super viewDidLoad]; ...

随机推荐

  1. What are Traceroute, Ping, Telnet and Nslookup commands?

    https://help.maximumasp.com/KB/a445/connectivity-testing-with-ping-telnet-tracert-and-pathping-.aspx ...

  2. Python开发【Django】:中间件、CSRF

    CSRF 1.概述 CSRF(Cross Site Request Forgery)跨站点伪造请求,举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用 ...

  3. 从零开始写JavaWeb框架(第四章节的AOP)

    使用"链式代理"实现 AOP   本文是<轻量级 Java Web 框架架构设计>的系列博文. 大家是否还记得<Proxy 那点事儿>中提到的 CGLib ...

  4. Spark Core (一) 什么是RDD的Transformation和Action以及Dependency(转载)

    1. Spark的RDD RDD(Resilient Distributed Datasets),弹性分布式数据集,是对分布式数据集的一种抽象. RDD所具备5个主要特性: 一组分区列表 计算每一个数 ...

  5. 入坑-DM导论-第一章绪论笔记

    //本学习笔记只是记录,并未有深入思考. 1.什么是数据挖掘? 数据挖掘是数据库中发现必不可少的一部分. 数据预处理主要包括(可能是最耗时的步骤): 1.融合来自多个数据源的数据 2.清洗数据以消除噪 ...

  6. Amber安装并行

    现在简单介绍一下amber12中安装openmpi并行的过程. 1. 下载openmpi版本在1.5-1.9之间的(openmpi-1.6.5.tar.bz2) 这是因为$AMBERHOME/Ambe ...

  7. NodeJS学习笔记六

    Symbol简介 ES6引入了一种新的原始数据类型Symbol,表示独一无二的值.它是JavaScript语言的第七种数据类型,前六种是:Undefined.Null.布尔值(Boolean).字符串 ...

  8. And Design:拓荒笔记——Form表单

    And Design:拓荒笔记——Form表单 Form.create(options) Form.create()可以对包含Form表单的组件进行改造升级,会返回一个新的react组件. 经 For ...

  9. web服务器配置实践

    1.为linux系统分配IP地址:192.168.X.1/24,客户端XP系统IP地址为:192.168.X.2/24,其主要DNS指定为:192.168.X.1. 2.查询本机是否安装了httpd服 ...

  10. 31Sql数据库的连接

    Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作.这里我们所说的“平台独立”,既包括操作系统平台,有包括各个数据库平台.另外,我们强调了“基于 SQL”,因为 NoSQL 数据 ...