AFNetworking网络请求与图片上传工具(POST)
AFNetworking网络请求与图片上传工具(POST)
.h文件
#import <Foundation/Foundation.h> /** 成功Block */
typedef void(^SuccessBlockType) (id responsData);
/** 失败Block */
typedef void(^FaileBlockType) (NSError *error); @interface NetDataEngine : NSObject //网络请求
+ (void)postServerUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(SuccessBlockType)success failure:(FaileBlockType)failure; //上传图片
+ (void)uploadWith:(UIImage *)upImg success:(SuccessBlockType)success failure:(FaileBlockType)failure; @end
.m文件
#import "NetDataEngine.h"
#import "AFNetworking.h" @implementation NetDataEngine +(AFHTTPSessionManager *)manager
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // 声明上传的是json格式的参数,需要你和后台约定好,不然会出现后台无法获取到你上传的参数问题
manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 上传普通格式
// manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 上传JSON格式 // 声明获取到的数据格式
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // AFN不会解析,数据是data,需要自己解析
// manager.responseSerializer = [AFJSONResponseSerializer serializer]; // AFN会JSON解析返回的数据
// 个人建议还是自己解析的比较好,有时接口返回的数据不合格会报3840错误,大致是AFN无法解析返回来的数据
// 超时时间
[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"]; manager.requestSerializer.timeoutInterval = 10.f;//设置请求超时时间 [manager.requestSerializer didChangeValueForKey:@"timeoutInterval"]; return manager;
} + (void)postServerUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(SuccessBlockType)success failure:(FaileBlockType)failure { AFHTTPSessionManager *manager = [self manager]; [manager POST:url parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; // JGLog(@"%@",dict);
success(dict); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// JGLog(@"error: %@",error);
failure(error);
}];
} + (void)uploadWith:(UIImage *)upImg success:(SuccessBlockType)success failure:(FaileBlockType)failure { // 创建管理者对象
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:UP_PIC parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { // 获取图片数据
NSData *fileData = UIImagePNGRepresentation(upImg); // 设置上传图片的名字
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.png", str]; [formData appendPartWithFileData:fileData name:@"image" fileName:fileName mimeType:@"image/png"]; } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { //上传成功后回调
success(responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//失败回调
failure(error);
}];
} @end
如果网络请求超时,就在请求失败中执行超时操作,如:取消指示器,提示用户网络存在问题等。
if (error.code == -1001) {
[MBProgressHUD showError:@"网络超时,请检查网络"];
}
//隐藏指示器
[SVProgressHUD dismiss];
AFNetworking网络请求与图片上传工具(POST)的更多相关文章
- 基于WebImage的图片上传工具类
支持缩略图和水印. using System; using System.IO; using System.Linq; using System.Web; using System.Web.Helpe ...
- PHP 图片上传工具类(支持多文件上传)
====================ImageUploadTool======================== <?php class ImageUploadTool { private ...
- Android okHttp网络请求之文件上传下载
前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...
- iOS利用AFNetworking(AFN) 实现图片上传
1.上传图片以二进制流的形式上传 1 #pragma mark - 文件上传 2 - (IBAction)uploadImage 3 { 4 /* 5 此段代码如果需要修改, ...
- iOS- 利用AFNetworking(AFN) - 实现图片上传
官方建议AFN的使用方法 1. 定义一个全局的AFHttpClient:包含有 1> baseURL 2> 请求 3> 操作队列 NSOperationQueue 2. 由AFHTT ...
- ASP.NET 图片上传工具类 upload image简单好用功能齐全
使用方法: UploadImage ui = new UploadImage(); /***可选参数***/ ui.SetWordWater = "哈哈";//文字水印 // ui ...
- [图床神器]Windows下的图片上传工具MPic
最近用hexo在github上搭建了一个静态博客,开始几天用起来感觉还挺好的,但是用了些天就觉得每次写文章插入图片就非常麻烦,而且如果图片多了的话上传和访问就很慢了.后来网上看了下发现mac下有款ip ...
- java网络编程之图片上传
输入输出流核心代码 所有的文件传输都是靠流,其中文件复制最具代表性.输入流和输出流,从输入流中读取数据写入到输出流中. InputStream in = 输入源; OutputStream os = ...
- MarkDown本地图片上传工具制作总结
引言:开始尝试使用MarkDown语法写文档,发现图片必须用外链的形式才能插入到文章中,而自己平时最常用的插入图片方式就是QQ截屏,觉得很不方便所以制作的小工具辅助上传,因为时间和水平有限,其实代码写 ...
随机推荐
- 利用EasySQLMAIL实现自动填写Excel表格并发送邮件(2)
利用EasySQLMAIL实现自动填写Excel表格并发送邮件 转自:http://blog.sina.com.cn/s/blog_1549483b70102witg.html 前一篇博文中记录了“利 ...
- 009-shiro与spring web项目整合【三】验证码、记住我
一.验证码 1.自定义FormAuthenticationFilter 需要在验证账号和名称之前校验验证码 /** * * <p>Title: CustomFormAuthenticati ...
- Android View体系 系列文章
http://www.cnblogs.com/Free-Thinker/p/6768783.html
- Remote System Upgrade With Cyclone III Devices
系统设计者会遇到较短的设计周期.标准发展和系统调度的挑战,飓风III系列支持远程系统更新,通过其固有的重编程功能和专有电路来克服以上问题.远程系统更新帮助传递系统性能增强和bug修复,避免了昂贵的召回 ...
- 基本数据类型(Day4)
一 什么是数据? eg:x=10 则10是要存储的数据 二 为什么数据要分不同的类型? 数据是用来表示不同状态的,当然不同的状态可以用不同的数据表示 三 数据类型 1.数字(整型,长整型 ,浮 ...
- appcmd应用
appcmd资料: http://www.jb51.net/article/36024.htm 官方文档:https://docs.microsoft.com/zh-cn/iis/get-starte ...
- java @Retention元注解
@Retention元注解 有三种取值:RetentionPolicy.SOURCE.RetentionPolicy.CLASS.RetentionPolicy.RUNTIME分别对应:Java源文件 ...
- 【JavaScript】满天星
参考: 1.http://www.w3school.com.cn/tags/canvas_filltext.asp 2.产生随机数:http://www.cnblogs.com/banbu/archi ...
- 禁止电脑登陆QQ聊天系统的四种方法
一.使用防火墙禁止端口法 QQ使用的默认端口是 UDP 4000,使用防火墙将该端口关闭,那么别人就不能使用QQ了,当自己需要上网时只需开放该端口就可以了. 下面以我使用的“金山网镖6”进行说明,点击 ...
- jz2440存储管理实验【学习笔记】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 简介:先来简单的说明一下这次的实验,看看下图,我们的程序通过烧录器下载到nandflash当中去,之后在启动的时 ...