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];

转载于:https://www.cnblogs.com/GJ-ios/p/5772925.html

AFNetworking网络请求与图片上传工具(POST)相关推荐

  1. vue点击图片后复制图片url_简单漂亮的(图床工具)开源图片上传工具——PicGo...

    介绍 PicGo: 一个用于快速上传图片并获取图片URL链接的工具,由vue-cli-electron-builder构建的简单漂亮的图片上传工具!基于electron-vue开发,支持macOS,W ...

  2. java 图片合成 工具类_Java实现的图片上传工具类完整实例

    本文实例讲述了Java实现的图片上传工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import javax.imageio.ImageIO; impo ...

  3. php 上传文件工具类,PHP 图片上传工具类(支持多文件上传)

    //ImageUploadTool.class.php class ImageUploadTool{ private $file; //文件信息 private $fileList; //文件列表 p ...

  4. JAVA工具类(13)---图片上传工具类

    package com.gcloud.common;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import ...

  5. Mac应用推荐:iPic 图片上传工具

    作为一名Mac用户,我们总是需要各种各样的软件来提高工作效率和生活质量.但是在众多的软件中,有些软件价格昂贵.功能复杂,而有些则是免费但功能不够完善.今天我要向大家推荐一款好用良心的Mac软件--iP ...

  6. afn post请求上传文件_iOS利用AFNetworking(AFN) 实现图片上传

    1.上传图片以二进制流的形式上传 1 #pragma mark - 文件上传 2 - (IBAction)uploadImage 3 { 4 10     // 1. httpClient->u ...

  7. 图片上传工具 java_图片上传工具类-fileUtil

    图片上传的工具类:生成缩略图,文件流转换. 可与struts2集成使用 import java.awt.Color; import java.awt.Graphics2D; import java.a ...

  8. 若依-vue图片上传本地改OSS前台以及后台-附带oss图片上传工具类

    阿丹: 在二次开发若依的过程中发现若依的图片上传的默认的是在本地,在spring-vue版本中,如果要将平台上线那么就需要考虑这个问题,要使用fastdfs或者oss来完成代替本地的图片上传. 本篇文 ...

  9. 一步步带你实现一个简单的express服务器,能让vue通过axios请求将图片上传到阿里云OSS

    文章目录 前言 一.申请阿里云OSS 二.Vue前端读取图片 三.将图片base64转成二进制文件 四.搭建express服务器 五.通过axios给服务器发送请求 六.发送图片并上传阿里云 我们首先 ...

最新文章

  1. 如何使用github托管项目---快速入门(菜鸟教程)
  2. 移动开发还有未来吗?
  3. SE11 仅以有限的方式支持生成的 DDL SQL 视图
  4. Linux 在脚本里面启动终端并执行命令
  5. lua php 触摸精灵,lua程序设计主要学习路径
  6. 无线数传电台工业控制的应用
  7. Kung Fu Panda: Legends of Awesomeness 2
  8. Tesla P4测试
  9. 软件工程师如何应对面试的可怕“反乌托邦世界”?
  10. redis的info
  11. java 线程重入,java synchronized加载加锁-线程可重入详解及实例代码
  12. RANSAC算法详解+Python实现
  13. 计算机开机跳过硬盘检查,怎么取消开机自动检测硬盘磁盘检查,开机老是修复分区怎么办及原因...
  14. 网易收购《底特律》《暴雨》开发商继续走向全球化
  15. 数字图像处理作业文档整合
  16. 标准oc算法的推导与99行代码详解
  17. 解决MySQL出现不允许连接错误,出现有如,ERROR 1130:Host 'localhost' is not allowed to connect to this MySQL server
  18. java改变背景图片大小_java编写界面设置 背景图片的大小
  19. 基于32单片机的16通道ADC的数据采集
  20. Express+MongoDB服务端开发教程

热门文章

  1. 【牛客 - 315C】排列(思维,贪心,同优则立证明法)
  2. jdk11 后用的指定编码格式,读取文件
  3. 服务器虚拟化底层系统安装,Hyper-V是底层的虚拟机程序,位于操作系统和硬件之间,很薄一层...
  4. MySQL命令(一)| 数据类型、常用命令一览、库的操作、表的操作
  5. 求数字序列中的第n位对应的数字
  6. 数组精选题目三连(5)
  7. C++:32---IO库
  8. PaperNotes(9)-Learning deep energy model: contrastive divergence vs. Amortized MLE
  9. Linux(10)--上一级路径、nano、切换su、查看用户、修改目录的读写权限
  10. 剑指offer(刷题31-40)--c++,Python版本